'echo'在shell脚本中没有换行符

我的脚本中有echo问题:

 echo -n "Some string..." 

版画

 -n Some string... 

并移动到下一行。 在控制台中,它正常工作,没有换行符:

 Some string... 

有多个版本的echo命令,具有不同的行为。 显然,用于脚本的shell使用的是不能识别-n的版本。

printf命令具有更一致的行为。 echo是很好的简单的东西,如echo hello ,但我build议使用printf任何更复杂的东西。

你在什么系统上,你的脚本使用了什么shell?

bash有一个名为“echo”的“内置”命令:

 $ type echo echo is a shell builtin 

另外,还有一个“echo”命令,它是一个合适的可执行文件(也就是shell和fork /bin/echo exec /bin/echo ,而不是解释echo和执行它):

 $ ls -l /bin/echo -rwxr-xr-x 1 root root 22856 Jul 21 2011 /bin/echo 

echo的WRT到\c-n的行为是不同的。 你最好的select是使用printf ,它可以在我看到的四种不同的* NIX风格中使用:

 $ printf "a line without trailing linefeed" $ printf "a line with trailing linefeed\n" 

尝试

 echo -e "Some string...\c" 

它正如我所料(我从你的问题中了解到)对我有用。

请注意,我从man页获得了这些信息。 man页也注意到shell可能有自己的echo版本,我不确定bash是否有自己的版本。

如果你在其他命令中使用了echo命令,比如“read”,它可能会忽略这个设置,并且会跳到新的一行。