シェルスクリプトでコマンドの結果を変数に代入する
シェルスクリプトで、コマンドの実行結果を変数に代入したいケースがあります。代入する方法は下記のようなコマンド代入できます。
結果を代入したいコマンドをバッククォート(`)で囲むか、$()の括弧の部分にコマンドをいれるかのどちらかと思います
- 書式1 「$[変数]=`コマンド`」
- 書籍2 「$[変数]=$(コマンド)」
# 書式1 $command=`echo "Hello, world!"` # 結果 Hello, world!" # 書式2 $command=$(echo "Hello, world!") # 結果 Hello, world!"
どちらも「Hello, world!」が出力されます。
私は最近まで書式1の「$[変数]=`コマンド`」の方を使っていました。
コマンドをバッククォート(`)で囲むやり方です。最近簡単なシェルスクリプトは、ChatGPTとかで質問するケースでは、書式1ではなく、書式2の「$[変数]=$(コマンド)」の方の$()構文の回答がほとんどです。
この違いですが、結果として同じですが、最近のシェルスクリプトでは$()構文が推奨されているようです。
理由としてはバッククォート(`)で囲む場合は、ネストされたコマンドの使用や、バッククォート内でバックスラッシュをエスケープする必要があるなど、記述が複雑になることがあるようです
$()構文の方は、Bash 2.0の登場以降、こちらの方を推奨されるようになったようで、現代のシェルスクリプトの書き方として、$()構文を使うことが一般的です。とのChatGPTから教えてもらいました
ディスカッション
コメント一覧
まだ、コメントがありません