管道命令输出到变量不起作用

管道命令输出到变量不起作用

当我尝试以下操作时没有问题:

$ 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

相关内容