我正在尝试填充一个名为的 shell 变量$recipient
,该变量应包含一个值,后跟一个换行符。
$ set -x # force bash to show commands as it executes them
我首先填充$user
,这是我希望换行符跟随的值。
$ user=user@xxx.com
+ user=user@xxx.com
echo $user
然后我在双引号命令替换中调用。该echo
语句应在 之后创建一个换行符$user
,并且双引号应保留换行符。
$ recipient="$(echo $user)"
++ echo user@xxx.com
+ recipient=user@xxx.com
但是,当我打印时$recipient
,我可以看到换行符已被丢弃。
$ echo "'recipient'"
+ echo ''\''recipient'\'''
'recipient'
我在 bash 版本 4.1.5 和 3.1.17 下发现了相同的行为,并且还在破折号下复制了该问题。
我尝试使用“printf”而不是 echo;这并没有改变任何东西。
这是预期的行为吗?