我的 echo 命令不接受开关(echo -n 或 echo -e)

g4u*_*r4v 2 shell echo

我的脚本中有一个 echo 语句,如下所示:

echo -ne "Check Script";
Run Code Online (Sandbox Code Playgroud)

我期待它打印

Check Script
Run Code Online (Sandbox Code Playgroud)

但我得到以下输出

-ne Check Script
Run Code Online (Sandbox Code Playgroud)

但是当我在其他机器上运行相同的脚本时,我得到了预期的输出。什么可能是机器特定的变量或属性,因为脚本的行为不同。

Sté*_*las 8

这就是符合 POSIX 和 UNIX 的行为echo。使用 UNIX 标准echo,你可以这样写:

echo 'Check Script\c'
Run Code Online (Sandbox Code Playgroud)

最好不要使用 echo 而是使用 printf ,它具有较少的可移植性问题。

printf %s 'Check Script'
Run Code Online (Sandbox Code Playgroud)

请注意,POSIX 允许-n作为扩展(但具有未指定的行为)。echo -e是为了输出-e\n,所以在这方面,bash并且zsh不符合 POSIX。