我已经阅读了关于echo的手册页,它告诉我-e参数将允许转义字符(例如换行符的转义n)具有其特殊含义。当我输入命令
$ echo -e 'foo\nbar'
进入交互式bash shell,我得到了预期的输出:
foo bar
但是,当我使用相同的命令(我已尝试将此命令字符作为测试用例的字符)时,我得到以下输出:
-e foo bar
这就好像echo将-e解释为一个参数(因为换行符仍然显示),但它也将-e解释为一个回显的字符串。这里发生了什么?如何防止-e出现?
您需要使用#!/ bin / bash作为脚本中的第一行。如果不这样做,或者使用#!/ bin / sh,则脚本将由Bourne shell运行,并且其echo不识别-e选项。通常,如果可移植性很重要,建议所有新脚本使用printf而不是echo。
原文链接:https://www.f2er.com/bash/387275.html在Ubuntu中,sh由符号链接提供给/ bin / dash。