次のようなコマンドを実行することの違いは何ですか:
var=$(ls -alh /dir)
そして、次のようにします:
var=`ls -alh /dir`
ある方法は、他の方法よりも多くのインタープリターで使用できますか?
彼らは両方ですcommand substitution
セクション 3.5.4 http://www.gnu.org/software/bash/manual/bashref.html
Bash は、コマンドを実行し、コマンド置換をコマンドの標準出力に置き換え、末尾の改行を削除して展開を実行します。埋め込まれた改行は削除されませんが、単語分割中に削除される場合があります。コマンド置換 $(cat file) は、同等で高速な $(< file) に置き換えることができます。
古いスタイルの逆引用符形式の置換が使用される場合、バックスラッシュは、'$'、'`'、または '\' が続く場合を除いて、その文字どおりの意味を保持します。バックスラッシュが前にない最初の逆引用符は、コマンド置換を終了します。$(command) 形式を使用する場合、括弧内のすべての文字がコマンドを構成します。特別に扱われることはありません。
コマンド置換は入れ子にすることができます。逆引用符で囲まれた形式を使用するときにネストするには、内側の逆引用符をバックスラッシュでエスケープします。
置換が二重引用符で囲まれている場合、単語の分割とファイル名の展開は結果に対して実行されません。