2023-06-23 10:00:00

"echo -n"打印"-n"

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

echo -n "Some string..."

打印

-n Some string...

然后转到下一行。在控制台中,没有换行符,它可以正常工作:

Some string...

当前回答

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

printf命令具有更一致的行为。echo适用于简单的echo hello,但我建议使用printf处理更复杂的事情。

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

其他回答

我在IBM z/OS中遇到了同样的问题,所以我使用了print而不是echo,而且它有效。

print -n "Some string ...."

print -从shell返回参数

Bash有一个“内置”命令叫做“echo”:

$ type echo
echo is a shell builtin

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

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

两个echo对于\c和-n的行为是不同的。最好的办法是使用printf,它可以在四种不同的*NIX版本上使用:

$ printf "a line without trailing linefeed"
$ printf "a line with trailing linefeed\n"
enable -n echo
echo -n "Some string..."

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

printf命令具有更一致的行为。echo适用于简单的echo hello,但我建议使用printf处理更复杂的事情。

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

当您开始编写shell脚本时,请始终使用#!/usr/bin/env bash作为第一行。

该shell不会省略或操作转义序列。

例子:

echo "This is first \\n line"

打印

This is first \n line.