#bash コマンド置換
コマンド出力に置き換える方法。
削除用のシェルに7日前の日付情報を引数として渡す場合は以下になる。
※実行結果は両方とも同一
$(command)での置換
sh /xxx/delete.sh $(date --date "-7 days" +%Y%m%d)
```sh:command
での置換
sh /xxx/delete.sh `date --date "-7 days" +%Y%m%d`
見易さ・ネストした際のエスケープを考えると、$()の方が良さそう。
```sh:$(command)での置換(ネストした場合)
echo $(echo "abcdefghijklmnopqrstuvwxyg" | cut -b $(echo "25"))
```sh:command
での置換(ネストした場合)
echo `echo "abcdefghijklmnopqrstuvwxyg" | cut -b `echo "25"``
###man bash 引用
>コマンド置換 (command substitution) を用いると、 コマンド名をコマンドの出力で置き換えられます。 コマンド置換には以下の 2 つの形式があります:
>
>$(command)
>
>または
>`command`
>bash は command を実行し、 command の標準出力でコマンド置換の部分を置き換えます。 この際、末尾の改行文字は削除されます。 文字列の途中にある改行文字は削除されませんが、 単語分割の際に削除されることがあります。 コマンド置換 $(cat file) は、同じ意味を持ち、 しかも高速な $(< file) に置き換え可能です。
>
>バッククォートを使う古い形式の置換を用いたとき、 バックスラッシュは文字通りの意味を保ちますが、 $, `, \ の前にある場合は例外となります。 コマンド置換は、バックスラッシュが前置されていない バッククォートまでの部分です。 $(command) という形式を用いたときは、 括弧の間にある全ての文字がコマンドとなります。 特別扱いされる文字はありません。
>
>コマンド置換は入れ子にできます。 バッククォート形式のときに入れ子を行うには、 内側のバッククォートをバックスラッシュでエスケープします。
>
>置換がダブルクォート内部にある場合には、 置換の結果に対する単語分割とパス名展開は行われません。
>