非常类似于这个问题 。
我通过几件事迭代与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”?
printf
应该是一个内置在所有的炮弹,除非你的一些机器都非常老贝的版本。 这是一个内置在bash
很长一段时间。 它可能比更便携echo -e
。
否则,真的没有办法让echo
它关心的选项。
编辑 :从答复到另一个类似的问题; 避免引用与问题printf
用这个方便的无数字版权保留包装:
ech-o() { printf "%s\n" "$*"; }
(这是ECH-O,如“无选项”。)
怎么样用(例如“X”)字符前缀字符串已移除的有切口上即时:
echo "x-n" | cut -c 2-
回声“-n”告诉shell把“-n”回声的第一个参数,字符的字符。 语义, echo "-n"
是一样的echo -n
。 试试这个(这是一个POSIX标准,并应在任何壳工作):
printf '%s\n' "-n"
如果调用猛砸名为sh
,它会模仿SH,其中-n
选项是不提供给echo
。 我不知道如果这虽然符合您的需求。
$ /bin/sh -c 'echo -n'
echo "-n"
将不打印-n
因为-n
被解释为一个选项echo
(见help echo
)。 但是你可以使用:
echo -e "\055n"