$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 で同じ動作を発見し、dash でも問題を再現しました。
echo ではなく「printf」を使用してみました。これは何も変わりませんでした。
これは予想される動作ですか?