回应换行抑制

时间:2010-04-15 12:30:47

标签: bash scripting newline echo

虽然$echo '-n'是用单引号写的,但为什么-n没有在终端上写-n

6 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:2)

您应该尝试尽可能使用更便携的printf

答案 2 :(得分:2)

你可以尝试

echo -e '\055n'

答案 3 :(得分:2)

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

echo -n PRINT_THIS

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

答案 4 :(得分:0)

引用没有用,因为......呃,很难解释。在评估“echo”命令本身之前,shell会删除引号,所以到那时它们并不重要。

试试这个:

echo - -n

没有记录为工作(我正在运行Ubuntu Linux),但echo几乎肯定是你正在使用的shell的内置函数,所以无论如何手册都是有问题的。它对我有用。 (我正在运行zsh,因为我真的很温文尔雅。)

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

echo '' -n

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

答案 5 :(得分:0)

不完全存在:

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

令人惊讶的是,这有效:

echo -e '-n\b'
-n

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

echo "foobar" | sed 's/.*/-n/'
-n