たぶん
echo `echo "foo"`
有効ですが
echo `awk '{ print "foo" }'`
いいえ?
答え1
プログラムはawk
入力を待ち、各入力行ごとに単語を印刷しますfoo
。これがawk
まさにプログラムがすることだ{ print "foo" }
。
対照的に、echo
最初のコマンド置換では入力は待機されません。
awk
プログラムに入力なしで何かを印刷させますか?出力をブロックとして実行しますBEGIN
。
awk 'BEGIN { print "foo" }'
ブロックBEGIN
が実行されます。今後入力の最初の行を読み込み、スクリプトに他のブロックもなく入力ファイルもないため終了します。
またecho $( ... )
、同じコードを書かずに、echo ` ... `
コマンドの置き換えにそのコードを使用してください。