シェルスクリプトが捗る!bashのコマンド置換を入れ子にする1の方法!
今までBourneシェル派だったから、bashでシェルスクリプトを書くってことがなくて知らなかったんだけど、bashではコマンド置換に、従来の
`コマンド`
によるコマンド置換だけでなくて、
$(コマンド)
という書き方ができるらしい。
これのどこがうれしいのかというと、入れ子にできるということ
たとえば、grepで-Aオプションで該当行+COUNT行取得し、かつ最後の1組しか取得したくないというときに、従来方式だと入れ子にできないから
COUNT=$1 COUNT_ADD_1=`expr ${COUNT} + 1` result=`grep -A ${COUNT} target_word target_file | tail -${COUNT_ADD_1}`
というような回りくどいことを書かないといけなかったところが、
COUNT=$1 result=$(grep -A ${COUNT} target_word target_file | tail -$(expr ${COUNT} + 1))
とシンプルにかけてしまう。
これは便利だ。
しかもbashなら
$(())
で、四則演算もできてしまうので、exprもいらず、
result=$(grep -A $1 target_word target_file | tail -$(($1 + 1)))
で済んでしまう。
なんとシンプル、すごいぞbash!!