Вывод передаваемой по конвейеру команды в переменную не работает

Когда я пытаюсь сделать следующее, проблем нет:

$ 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.

0
04.06.2019, 22:32
1 ответ

Не используйте команды в качестве имени переменной. dd— ваш разрушитель дисков,посмотрите на man ddи попробуйте другое имя переменной или что-то вроде этого:

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

Возможно, эта часть руководства bashтакже будет полезна:

man bash | sed -n '/^DEFINITIONS/,/^SHELL GRAMMAR/p' | less
-1
28.01.2020, 05:05

Теги

Похожие вопросы