在Shell中使用“-n”选项进行回显时,输出结果不正确。

9

我知道这是一些特殊字符的问题,但我不知道该如何解决。

我在控制台中输入

echo "-n"

但是没有任何打印输出 :(

我也尝试了以下代码

echo -e "-n" 

要执行特殊字符(从序列中转义的字符),但仍然没有发生任何事情。

我如何打印“-n”?


2
令人印象深刻,我从未遇到过这个问题。不错! - wallyk
2个回答

11

尝试

printf "%s\n" -n
或者
printf "%s\n" '-n'

2
是的,printfecho 更强大且更一致。 - Keith Thompson

5
这里有一个方法:

以下是具体步骤:

aix@aix:~$ echo -e '\x2dn'
-n

它将 - 转义为 \x2d

更详细的方法是分别打印这两个字符:

aix@aix:~$ echo -n -; echo n
-n

这里,-n指示第一个echo不要打印换行符;它与打印的-n无关。 :)


1
POSIX对echo的定义并不保证其能正常工作。实际上,任何echo -e没有在输出中打印-e的实现都违反了标准,其中-n是唯一允许的选项[虽然允许,但没有明确定义:echo -n只是使输出变得未定义,因此不再需要符合任何特定的规范]。 - Charles Duffy
在bash中,shopt -s xpg_echo 使其 echo 命令符合标准,当同时启用 set -o posix 时,这意味着这里给出的 echo -e hack 将不再起作用。 - Charles Duffy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接