エイリアス内で読み取りループが機能していない間

エイリアス内で読み取りループが機能していない間

Bash で次のコマンドを実行します。

echo foo | while read line; do echo $line; done

fooただし、次のように出力されます。

alias bar="echo foo | while read line; do echo $line; done"
bar

a \n(またはスペース)を出力します。これらの行動の違いの原因は何ですか?

答え1

変数拡張を延期するには、単一引用符を使用してください。

alias bar='echo foo | while read line; do echo $line; done'

関連情報