echo“-e”不会打印任何内容

时间:2008-11-26 11:03:22

标签: bash

我正在使用GNU bash,版本3.00.15(1)-release(x86_64-redhat-linux-gnu)。这个命令:

echo "-e" 

不打印任何内容。我猜这是因为“-e”是echo命令的有效选项之一,因为echo“-n”和echo“-E”(其他两个选项)也会产生空字符串。

问题是如何为echo获取自然输出(“-e”)的序列“-e”。

10 个答案:

答案 0 :(得分:14)

打印任意字符串的唯一方法:

printf "%s" "$vars"

答案 1 :(得分:12)

这是一个艰难的;)

通常你会用双破折号告诉命令它应该停止解释选项,但是echo只输出那些:

$ echo -- -e
-- -e

您可以使用-e本身来解决问题:

$ echo -e '\055e'
-e

另外,正如其他人所指出的,如果你不坚持使用bash内置echo,你的/bin/echo二进制文件可能是该工具的GNU版本(查看手册页)和因此理解POSIXLY_CORRECT环境变量:

$ POSIXLY_CORRECT=1 /bin/echo -e
-e

答案 2 :(得分:5)

可能有更好的方法,但这有效:

printf -- "-e\n"

答案 3 :(得分:4)

你可以通过

作弊
echo "-e "

那将是破折号,空间。

或者你可以使用更复杂但更精确的:

echo -e \\\\x2De

答案 4 :(得分:1)

 
[root@scintia mail]# POSIXLY_CORRECT=1; export POSIXLY_CORRECT
[root@scintia mail]# /bin/echo "-e"
-e
[root@scintia mail]#

答案 5 :(得分:1)

在仔细关注手册页之后:)

SYSV3=1 /usr/bin/echo -e

至少在Solaris上运行

答案 6 :(得分:1)

另一种选择:

echo x-e | sed 's/^x//'

这是autoconf manual建议的方式:

  

[...]通常可以使用'echo“x $ word”'来避免这个问题,稍后在管道中考虑'x'。

答案 7 :(得分:1)

我喜欢那个使用herestring的人:

cat <<<"-e"

答案 8 :(得分:0)

另一种方式:

echo -e' '
echo -e " \b-e"

答案 9 :(得分:-2)

/bin/echo -e

有效,但为什么?

[resin@nevada ~]$ which echo 
/bin/echo