便利なコマンド置換記法

シェルスクリプトで変数にコマンドの出力結果を代入したい場合、コマンド置換機能を使います。
コマンド置換には以下のようにバッククォートを用います。

test_var=`date`
echo $test_var
Sun Oct 5 01:19:19 JST 2014

あるいは$()という記法もあります。

test_var=$(date)
echo $test_var
Sun Oct 5 01:20:54 JST 2014

$()を用いた記法のほうが便利です。例えばコマンドの中に更にコマンドを含める(ネストする)場合のことを考えてみましょう。

sample_var=`echo hello \`hostname\``

バッククォートを用いた場合、hostnameの部分のバッククォートをエスケープしないとhostnameがコマンドとして評価されません。しかし、いちいちエスケープするのは面倒だし、見づらいです。

これが、$()を用いた記法だと。。。

sample_var=$(echo hello $(hostname))

グッと見やすくなります。

以上。

Leave a Reply

Your email address will not be published. Required fields are marked *