Я пытаюсь заполнить переменную оболочки с именем $recipient
, которая должна содержать значение, за которым следует новая строка.
$ set -x # force bash to show commands as it executes them
Я начинаю с заполнения $user
— значения, за которым должен следовать перевод строки.
$ [email protected]
+ [email protected]
Затем я вызываю echo $user
внутри подстановки команд в двойных кавычках. Оператор echo
должен создавать новую строку после $user
, а двойные кавычки должны сохранять новую строку.
$ recipient="$(echo $user)"
++ echo [email protected]
+ [email protected]
Однако, когда я печатаю $recipient
, я вижу, что новая строка была отброшена.
$ echo "'recipient'"
+ echo ''\''recipient'\'''
'recipient'
Я обнаружил такое же поведение в версиях bash 4.1.5 и 3.1.17, а также воспроизвел проблему в dash.
Я попытался использовать «printf», а не эхо; это ничего не изменило.
Это ожидаемое поведение?