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

我在脚本中遇到了echo问题:

echo -n "Some string..."

版画

-n Some string...

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

Some string...

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

printf命令具有更一致的行为。 echo是罚款喜欢简单的事情echo hello ,但我建议使用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有所不同。 你最好的选择是使用printf ,它可以在我看到的四种不同的* NIX风格中使用:

$ printf "a line without trailing linefeed"
$ printf "a line with trailing linefeedn"

尝试

echo -e "Some string...c"

它按预期对我有效(正如我从你的问题中所理解的那样)。

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

链接地址: http://www.djcxy.com/p/4375.html

上一篇: 'echo' without newline in a shell script

下一篇: Linux: Illegal option read