在shell脚本“回响”不换行在shell脚本“回响”不换行('echo' with

2019-06-12 06:34发布

我有一个问题echo在我的脚本:

echo -n "Some string..."

版画

-n Some string...

并且移动到下一行。 在控制台它的工作正确地将不换行:

Some string...

Answer 1:

有多个版本的echo命令,用不同的行为。 显然,用于你的脚本的外壳采用的是无法识别的版本-n

printf命令有更加一致的行为。 echo是罚款喜欢简单的事情echo hello ,但我建议使用printf任何事情更加复杂。

是什么系统你,并没有你的脚本使用什么壳呢?



Answer 2:

bash有一个名为“回声”是“内置”的命令:

$ type echo
echo is a shell builtin

此外,还有一个“回声”命令是一个适当的可执行文件(即,壳派生并执行/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 linefeed\n"


Answer 3:

与尝试

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

这对我的作品如预期(因为我从你的问题理解的)。

请注意,我从这个信息man页面。 该man页还注意到,外壳可能有它自己的版本echo ,我不知道bash有它自己的版本。



Answer 4:

如果您使用的回声内的,如果与其他命令,比如“读”,它可能会忽略的设置,它会跳转到一个新行呢。



文章来源: 'echo' without newline in a shell script