Bash echo命令不使用转义字符

时间:2012-01-10 11:09:27

标签: bash escaping cygwin newline echo

bash echo命令未使用转义字符,例如“\ n”和“\ t”

echo "This is test string\nAnd this is next line"

对于上面的输入,它显示

This is test string\nAnd this is next line

那么如何在下一行打印?

4 个答案:

答案 0 :(得分:11)

如果您希望展开转义字符,则需要echo -e

$ echo -e "This is test string\nAnd this is next line"
This is test string 
And this is next line

答案 1 :(得分:6)

$ echo $'This is test string\nAnd this is next line'
This is test string
And this is next line

<强> ANSI-C Quoting

  

$'string'形式的单词是专门处理的。单词扩展为字符串,替换为ANSI C标准指定的反斜杠转义字符。

答案 2 :(得分:4)

echo命令变化很大 - 有些实现会在其参数中解释转义字符,有些则除非您添加-e选项...有些会将“-e”打印为如果您尝试将其用作选项,则输出的一部分。如果您在做任何重要事情时想要可预测的结果,请改用printf(请注意,您必须明确包含结束换行符):

printf "This is test string\nAnd this is next line\n"

我很难学到这一课,当OS X v10.5带有内置echo的bash版本时,打破了我的一些脚本,这些脚本在v10.4下运行得很好。

答案 3 :(得分:0)

您可以使用echo -e,也可以在脚本开头使用内置的shopt

shopt -s xpg_echo
...
echo "hello world\n"