我在我的脚本中有一个echo的问题:
echo -n "Some string..."
打印
-n Some string...
然后转到下一行。在控制台中,没有换行符,它可以正常工作:
Some string...
我在我的脚本中有一个echo的问题:
echo -n "Some string..."
打印
-n Some string...
然后转到下一行。在控制台中,没有换行符,它可以正常工作:
Some string...
当前回答
注意,AIX上的/usr/bin/echo和/bin/echo不支持任何参数,因此如果使用sh或KornShell (ksh) shell, -n和-e都不起作用。
C shell和Bash有自己的内置echo,支持-n。 这是相关的,因为许多shell脚本显式地使用sh或KornShell。
AIX确实有/usr/bin/printf,因此正如前面的一些回答中所建议的,
$ printf "whatever"
相当于echo -n "whatever",其中支持-n。
其他回答
仅就最流行的Linux发行版Ubuntu及其Bash而言:
检查您正在使用哪个shell。主要是以下作品,其他看这个: echo $ 0 如果上面打印bash,那么下面将工作: Printf "hello with no new line print in end" 或 Echo -n "hello with no new line in end"
试着用
echo -e "Some string...\c"
正如我从你的问题中理解的那样,它对我来说是有效的。
请注意,我从手册页获得了这些信息。手册页还指出shell可能有自己的echo版本,我不确定bash是否有自己的版本。
我相信现在你的输出如下
~ echo -e "String1\nString2"
String1
String2
可以使用xargs将多行标准输出输出到同一行。
~ echo -e "String1\nString2" | xargs
String1 String2
~
注意,AIX上的/usr/bin/echo和/bin/echo不支持任何参数,因此如果使用sh或KornShell (ksh) shell, -n和-e都不起作用。
C shell和Bash有自己的内置echo,支持-n。 这是相关的,因为许多shell脚本显式地使用sh或KornShell。
AIX确实有/usr/bin/printf,因此正如前面的一些回答中所建议的,
$ printf "whatever"
相当于echo -n "whatever",其中支持-n。
echo命令有多个版本,具有不同的行为。显然,用于脚本的shell使用了一个不识别-n的版本。
printf命令具有更一致的行为。echo适用于简单的echo hello,但我建议使用printf处理更复杂的事情。
您在什么系统上,您的脚本使用什么shell ?