Bash脚本回声-n

我写了一个bash脚本,我想回显一个string,但没有自动添加到最后的换行符。 阅读手册页上的标志是-n

问题是,当我这样做时:

 echo -n "My string is here" 

bash脚本中的输出是:

 -n My string is here 

任何想法为什么-n标志被输出,而不是处理。

检查你正在使用的shell:

 echo $0 

如果是/bin/sh ,请使用chsh切换到/bin/bash ,然后重试。

http://hints.macworld.com/article.php?story=20071106192548833

适用于CentOS,但似乎OSX不喜欢-n标志。

echo在版本之间奇怪地不一致 – 不同版本的/ bin / echo,以及各种shell(甚至是同一个shell的不同版本)的内置版本。 有些版本理解选项(如-n ),有些版本可以理解string中的转义序列(以"\c"结尾以跳过换行符)。 有些版本使用这两个奇怪的组合。

如果您想要一致的行为,请避免使用echo而使用printf 。 这有点复杂,但更可预测:

 printf "%s" "My string is here"