Bash 脚本 Echo -n

Bash 脚本 Echo -n

我正在编写一个 bash 脚本,我想回显一个字符串,但不会在末尾自动添加换行符。阅读手册页时,它说标志是-n

问题是,当我这样做时:

echo -n "My string is here"

Bash 脚本中的输出是:

-n My string is here

知道为什么-n要输出标志而不是处理标志吗?

答案1

检查你正在使用的 shell:

echo $0

如果是/bin/sh,请更改为/bin/bash并重chsh试。

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

答案2

可以在 CentOS 上运行,但 OSX 似乎不喜欢 -n 标志。

答案3

echo不同版本之间存在奇怪的不一致——/bin/echo 的不同版本,以及不同 shell 中的内置版本(甚至同一 shell 的不同版本)。有些版本理解选项(例如-n),有些版本理解字符串中的转义序列(以 结尾以"\c"跳过换行符)。有些版本使用两者的奇怪混合。

如果您希望行为保持一致,请避免echo使用,而printf应使用。这有点复杂,但更容易预测:

printf "%s" "My string is here"

相关内容