Когда я пытаюсь сделать следующее, проблем нет:
$ 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
.
Не используйте команды в качестве имени переменной. dd
— ваш разрушитель дисков,посмотрите на man dd
и попробуйте другое имя переменной или что-то вроде этого:
d=`date '+%y%m' | sed 's/.\(.*\)/\1/'`
echo $d
Возможно, эта часть руководства bash
также будет полезна:
man bash | sed -n '/^DEFINITIONS/,/^SHELL GRAMMAR/p' | less