回答:
構文を考えると、$(command) &結果は、runningの出力を取得し、それをコマンドとしてcommand実行しようとした場合と同じです。そして、これらすべてはバックグラウンドで行われます。つまり、出力が表示されなかったり、ターミナルでハングアップしたりすることはありません。
たとえばmycommand.txt、次の内容で名前が付けられたテキストファイルがあるとします。
echo "Hello World"
次に、コマンド
$(cat mycommand.txt) &
実行するのと同じです
echo "Hello World" &
ただし、アンパサンド(&)を追加したので、このコマンドからの出力は表示されないため、この例ではほとんど役に立ちません。
$(変数)括弧内のものの前のドル記号は通常、変数を指します。つまり、このコマンドはbashスクリプトから変数に引数を渡すか、何かの変数の値を取得しています。変数を呼び出して宣言するためのbashスクリプトの違いは次のとおりです。
変数を宣言することなく、ドル記号とそれを呼び出すとドル記号。たとえば、これを含むスクリプト
#!/bin/bash
STR="Hello World!"
echo $STR
これを出力します
Hello World!
()-コマンド置換コマンド置換により、コマンドの出力でコマンド自体を置き換えることができます。コマンド置換は、コマンドが次のように囲まれている場合に発生します。
$(command)
または
`command`
Bashは、サブシェル環境でコマンドを実行し、コマンド置換をコマンドの標準出力に置き換えて、末尾の改行を削除することにより、拡張を実行します。埋め込まれた改行は削除されませんが、単語分割中に削除される場合があります。コマンドの置換$(cat file)は、同等の高速なコマンドで置き換えることができます$(< file)。
&-バックグラウンドプロセスそして、アンパサンドまたは&シンボルは、あなたが言ったように、それをバックグラウンドで実行するために使用されます。
「コマンド」の出力をコマンドとして受け取り、それをバックグラウンドで実行します。その機能は「評価」に匹敵します
$( )いますが、残りはありません。それはちょうど$(command) &、それが私を混乱させるものです。