管道命令輸出到變數不起作用

管道命令輸出到變數不起作用

當我嘗試以下操作時沒有問題:

$ 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

相關內容