echo 命令在将输出存储在变量中时不保留 \n 字符 - bash shell 脚本

echo command not preserving \n character when storing output in a variable - bash shell script

当 echo 命令将数据存储在变量中时,我正在尝试检索换行符。有人可以帮我吗

当我 运行 echo -e 时,它​​给出了命令行的预期输出

bash>testfile='INFO\nERROR\nWARNING'
bash> echo -e "$testfile"`
INFO
ERROR
WARNING

但是,当我尝试将输出存储在变量中时,我缺少换行符。

bash>testoutput=`echo -e "$testfile" | grep 'WARNING\|ERROR'`
bash>echo $testoutput
ERROR WARNING

感谢建议

在 unix stackexchange 上查看 this answer

看起来换行符在那里,echo 只是出于某种原因不想打印它们。请查看 printf

brundage@fatty ~ $ testfile='INFO\nERROR\nWARNING'

brundage@fatty ~ $ echo -e "$testfile"
INFO
ERROR
WARNING

brundage@fatty ~ $ testoutput=`echo -e "$testfile" | grep 'WARNING\|ERROR'`

brundage@fatty ~ $ printf "$testoutput\n"
ERROR
WARNING