回声“-n”将不打印-n?(echo “-n” will not print -n?)

2019-07-03 15:08发布

非常类似于这个问题 。

我通过几件事迭代与BASH自动化脚本。 偶尔脚本会遇到“-n”和echo将试图解释这一点。

尝试这样的:

 $ POSIXLY_CORRECT=1 /bin/echo -n

 $ POSIXLY_CORRECT=1 /bin/echo "-n"

但是,每一次解释的说法。

然后这一点,这工作,但它可能在弦打转义字符,这就是为什么我不想空字符适用于所有的输入,并使用-e。

$ echo -e "\x00-n"
-n

printf的是可能的,但要避免的,除非没有其他选择(不是所有的机器都printf的一个实用程序)。

$printf "%s" "-n"
-n

那么,有没有办法让回声打印“-n”?

Answer 1:

printf应该是一个内置在所有的炮弹,除非你的一些机器都非常老贝的版本。 这是一个内置在bash很长一段时间。 它可能比更便携echo -e

否则,真的没有办法让echo它关心的选项。

编辑 :从答复到另一个类似的问题; 避免引用与问题printf用这个方便的无数字版权保留包装:

ech-o() { printf "%s\n" "$*"; }

(这是ECH-O,如“无选项”。)



Answer 2:

怎么样用(例如“X”)字符前缀字符串已移除的有切口上即时:

echo "x-n" | cut -c 2-


Answer 3:

回声“-n”告诉shell把“-n”回声的第一个参数,字符的字符。 语义, echo "-n"是一样的echo -n 。 试试这个(这是一个POSIX标准,并应在任何壳工作):

printf '%s\n' "-n"


Answer 4:

如果调用猛砸名为sh ,它会模仿SH,其中-n选项是不提供给echo 。 我不知道如果这虽然符合您的需求。

$ /bin/sh -c 'echo -n'


Answer 5:

echo "-n"将不打印-n因为-n被解释为一个选项echo (见help echo )。 但是你可以使用:

echo -e "\055n"


Answer 6:

作弊方法:

echo -e  "\r-n"


文章来源: echo “-n” will not print -n?
标签: bash echo