经过几天的研究,我仍然不明白为什么:
echo -e a\nb
给我输出:anb
虽然
echo -e 'a\nb' -----> Gives me an output of
a
b
我知道echo -e激活转义序列,所以它应该适用于第一个例子,但它没有...我迷路了。 我在Ubuntu和OpenSuse中尝试了相同的命令。两者,结果相同。 任何帮助?
答案 0 :(得分:2)
echo 'a\nb'
这意味着\n
,\r
,\r\n
是键盘中的新行或输入键。它解析那些字符串。结果是:
a
b
在echo a\nb
中,它不解析但只是将其打印为普通字符串。
要启用或停用反斜杠解释,您可以-e
到-E
。
答案 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'