$(cmd)
cmd
の結果を代入します 文字列として、(cmd; cmd)
サブプロセスでコマンドのリストを実行します。
1 つ以上のコマンドの出力を変数に入れたい場合は、$( cmd ) 形式を使用してください。
ただし、多数のコマンドを実行してそれらを 1 つのユニットとして扱いたい場合は、() 形式を使用してください。
後者は、一連のコマンドをバックグラウンドで実行したい場合に便利です:
(git pull; make clean; make all) &
それらは別物です。
$()
`` (バッククォート) のような式 (コマンドの実行) を評価します
> (echo ls)
ls
> $(echo ls)
file1 file2
> `echo ls`
file1 file2
> echo $(echo ls)
ls
それらは異なりますが、それらの間には記憶上の関係があります。
(...)
シェル コマンドが実行される新しいサブシェルを開始するコマンドです。
$(...)
は、新しいサブシェルを開始する式です。その展開は、実行するコマンドによって生成される標準出力です。
これは、bash
の別のコマンド/式のペアに似ています :((...))
は算術文ですが、$((...))
は は算術式です。