10

为什么不$echo '-n'-n在终端虽然-n写在单引号内?

4

6 回答 6

13

因为引号由 shell 处理,并且echo命令接收 plain -n。如果你想回显-n,你可以例如printf '%s\n' -n

于 2010-04-15T12:36:14.057 回答
4

我发现以下内容仅适用于 bash:

echo -n PRINT_THIS

所以,你应该把 -n 放在第一位。

于 2013-01-23T10:14:53.217 回答
2

你应该尽量使用更便携printf的。

于 2010-04-15T14:05:17.270 回答
2

你可以试试

echo -e '\055n'
于 2010-04-15T14:13:33.090 回答
0

引号没有帮助,因为......呃,很难解释。在评估“echo”命令本身之前,shell 会去掉引号,所以到那时它们已经无关紧要了。

试试这个:

echo - -n

这没有记录为工作(我正在运行 Ubuntu Linux),但echo几乎可以肯定它是您使用的任何 shell 的内置程序,因此手册页无论如何都是有问题的。它对我有用。(我正在跑步zsh,因为我真的很温文尔雅和老练)。

编辑:好吧,似乎bash内置的edit行为不是这样。我不知道该建议什么;这:

echo '' -n

会给你“-n”前面有一个空格,这(取决于你在做什么)可能没问题。

于 2010-04-15T12:34:40.377 回答
0

不完全在那里:

echo -e 'a-n\b\b\b '
 -n

令人惊讶的是,这有效:

echo -e '-n\b'
-n

这是我可以解释的解决方案:

echo "foobar" | sed 's/.*/-n/'
-n
于 2010-04-16T04:21:32.897 回答