我的脚本中有一个 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)
但是当我在其他机器上运行相同的脚本时,我得到了预期的输出。什么可能是机器特定的变量或属性,因为脚本的行为不同。
这就是符合 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。