1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

bash コマンド置換

Posted at

#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) という形式を用いたときは、 括弧の間にある全ての文字がコマンドとなります。 特別扱いされる文字はありません。
>
>コマンド置換は入れ子にできます。 バッククォート形式のときに入れ子を行うには、 内側のバッククォートをバックスラッシュでエスケープします。
>
>置換がダブルクォート内部にある場合には、 置換の結果に対する単語分割とパス名展開は行われません。
>

1
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?