回答:
構文を考えると、$(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) &
、それが私を混乱させるものです。