Echo -e转义序列?

时间:2015-11-13 16:27:06

标签: linux echo

经过几天的研究,我仍然不明白为什么:

echo -e a\nb 

给我输出:anb

虽然

echo -e 'a\nb'   -----> Gives me an output of 

 a
 b

我知道echo -e激活转义序列,所以它应该适用于第一个例子,但它没有...我迷路了。 我在Ubuntu和OpenSuse中尝试了相同的命令。两者,结果相同。 任何帮助?

2 个答案:

答案 0 :(得分:2)

echo 'a\nb' 这意味着\n\r\r\n是键盘中的新行或输入键。它解析那些字符串。结果是:

a
b

echo a\nb中,它不解析但只是将其打印为普通字符串。 要启用或停用反斜杠解释,您可以-e-E

参考:https://en.wikipedia.org/wiki/Newline

参考:http://linux.die.net/man/1/echo

答案 1 :(得分:0)

shell在未引用\字符时解释\字符,而shell(通常)以不同于echo命令的方式解释它。

echo -e a\nb

在上文中,shell将\n解释为n,因为字符不在引号中。因此shell将字符anb传递给echo命令。

echo -e 'a\nb'

在上面,shell将确切的字符a\nb传递给echo命令,因为单引号告诉shell不要解释\

请注意,bash支持一种直接解释ANSI C转义的引用形式:

echo $'a\nb'