現代的なアドバイスは、次を使用することです。
$(...)
以前のものの代わりに:
`...`
主に読みやすさを高め、ネスト時に脱出する必要を防ぐためです。
この形式をサポートしていないシェルとは何$(...)
ですか?今日でもまだ使用されているシェルは何ですか?
答え1
元のBourneシェル、csh、またはtcshはサポートされておらず、コマンドの置き換えは$()
不要です。``
多くのUNIXベースのオペレーティングシステムでは、Bourneシェルはデフォルトのシェル(/ bin / sh)として使用されなくなりました。ただし、これらのシェルは歴史的な理由で依然として使用されているため、オペレーティングシステムベンダーによって提供されます。
AIXとHP-UXはどちらもPOSIX互換シェルとして/ bin / shを持っています。 BourneシェルはAIXではまだ「bsh」で動作します(ただし、1995年AIX 4.1 の場合) および HP-UX 11.11 '/usr/old/bin/sh' (Bourne は 11.23 から削除されました).これらの移行がいつ発生したのかは不明ですが、数年前のことです。
答え2
Solaris 10以前では/bin/sh
サポートされていません$()
。
Solaris 10はまだ使用されており、SunはそれをSolaris 10までの標準互換バージョンに置き換えることを望んでおらず、ほとんどの人がそれをデフォルトのシェルと見なしている/bin/sh
ため、今日でもまだ使用されています。POSIX互換シェルを使用してスクリプトを移植可能に実行する方法がわかりません。。
Sunが変更しない理由は、/bin/sh
未定義の動作に依存する既存のシェルスクリプトを破損させないためです。