変数へのパイプコマンドの出力が機能しない

変数へのパイプコマンドの出力が機能しない

以下を試しても問題は発生しません。

$ date '+%y%m' | sed 's/.\(.*\)/\1/'
906

しかし、変数に保存しようとすると、何も保存されないようです。

$ dd=`date '+%y%m' | sed 's/.\(.*\)/\1/'`
$ echo "$dd"

を使わなくても同じ結果が得られることはわかっていますsed:

$ dd=`date '+%y%m'`
$ echo ${dd: -3}
906

しかし、なぜそれが では動作しないのか不思議ですsed

答え1

変数名としてコマンドを使用しないでください。ddがディスク破壊者の場合は、man dd別の変数名または次のような名前を試してください。

d=`date '+%y%m' | sed 's/.\(.*\)/\1/'`
echo $d

おそらくマニュアルのこの部分bashも役に立つでしょう:

man bash | sed -n '/^DEFINITIONS/,/^SHELL GRAMMAR/p' | less

関連情報