Когда я пробую следующее, проблем не возникает:
$ 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