コマンドの実行結果を変数に代入する方法です。
バッククォート
バッククォート(`)で文字列中のコマンドを実行することができます。 これを使って変数にコマンドの実行結果を代入します。
[変数名]=`コマンド`
例 pwdコマンドの結果を変数のDIRに代入
DIR=`pwd`
-
コマンドのネスト
バッククォートをバックスラッシュでエスケープすることで、コマンドのネストも可能になります。
例 pwdコマンドの結果に対して"ls -ld"を実行
STR=`ls -ld \`pwd\``
最初に実行されるコマンドは、以下の赤色の個所のpwdコマンドになります。 その後、pwdコマンドの結果に対してlsコマンドが実行されます。
STR=`ls -ld \`pwd\``
これは以下と同じになります。
DIR=`pwd` STR=`ls -ld $DIR`
コマンドの実行結果を配列に代入
コマンドの実行結果を配列にする場合は、バッククォートで囲んだコマンドを"("と")"で囲みます。
[変数]=(`コマンド`)
例 現在のディレクトリ内のファイルを求めて配列にする
#!/bin/bash LS=(`ls -1`) # 現在のディレクトリ内のファイルを配列にする for FNAME in "${LS[@]}" do SIZE=`ls -l $FNAME | awk '{print $5}'` echo "$SIZE $FNAME" done
バッククォート以外
バッククォート以外では、コマンドを"$("と")"で囲むことでも可能です。
例 pwdコマンドの結果を変数DIRに設定
DIR=$(pwd)