$(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 の別のコマンド/式のペアに似ています :((...)) は算術文ですが、$((...)) は は算術式です。