我正在使用GNU bash,版本3.00.15(1)-release(x86_64-redhat-linux-gnu)。这个命令:
echo "-e"
不打印任何内容。我猜这是因为“-e”是echo命令的有效选项之一,因为echo“-n”和echo“-E”(其他两个选项)也会产生空字符串。
问题是如何为echo获取自然输出(“-e”)的序列“-e”。
答案 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