首页 > 解决方案 > 将输出存储在变量中时,echo 命令不保留 \n 字符 - bash shell 脚本

问题描述

当 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

感谢您的建议

标签: newlinepreserve

解决方案


在 unix stackexchange 上查看这个答案。

看起来换行符在那里,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

推荐阅读