コマンドラインの出力をキャプチャする方法は2つありますbash。
レガシーボーンシェルのバックティック
``:var=`command`$()構文(私が知る限り、これはBash固有であるか、少なくとも元のBourneのような非POSIX古いシェルではサポートされていません)var=$(command)
バックティックと比較して2番目の構文を使用する利点はありますか?それとも2つは完全に100%同等ですか?
$()エイリアスでの使用とバッククォートに関する注意。あなたが持っている場合はalias foo=$(command)、あなたの中で.bashrc、その後commandaliasコマンド自体が中に実行されたときに実行されます.bashrc解釈。でalias foo=`command`、commandエイリアスが実行されるたびに実行されます。ただし$、$()フォーム(例:)でエスケープすると、解釈alias foo=\$(command)中ではなく、エイリアスが実行されるたびに実行.bashrcされます。とにかく、テストでわかる限り、この動作を説明するbashドキュメントには何も見つかりません。
`command` command1回だけ実行されます。私はそれをチェックしました:function aaa(){printf date; echo aaa >>〜/ test.txt; エイリアスtest1 = aaa。エイリアス(test1)が何回実行されても、関数aaaは1回だけ(ログインごとに)実行されます。.bashrc(Debian 10)を使用しました。
$()POSIXであり、ksh、bash、ash、dash、zsh、busyboxなどのすべての最新のBourneシェルでサポートされています。(それほどモダンではない/bin/shがSolarisですが、Solaris/usr/xpg4/bin/shでは代わりにモダンを使用することを確認します)。