如何打印新行?这只会打印\n:
$ echo -e "Hello,\nWorld!"
Hello,\nWorld!
如何打印新行?这只会打印\n:
$ echo -e "Hello,\nWorld!"
Hello,\nWorld!
当前回答
如果前面的答案不起作用,并且需要从函数中获取返回值:
function foo()
{
local v="Dimi";
local s="";
.....
s+="Some message here $v $1\n"
.....
echo $s
}
r=$(foo "my message");
echo -e $r;
只有这个技巧在我使用Bash版本开发的Linux系统上有效:
GNU bash, version 2.2.25(1)-release (x86_64-redhat-linux-gnu)
其他回答
你也可以使用带括号的echo,
$ (echo hello; echo world)
hello
world
您还可以执行以下操作:
echo "hello
world"
这在脚本内部和命令行中都有效。
在命令行上,按Shift+Enter键在字符串内进行换行。
这适用于我的macOS和Ubuntu 18.04(仿生海狸)系统。
改用printf:
printf "hello\nworld\n"
printf在不同环境中的表现比echo更一致。
确保你在巴什。
$ echo $0
bash
这四种方式对我都有效:
echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
echo Hello ; echo world
POSIX 7回波
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e未定义,反斜杠已实现定义:
如果第一个操作数是-n,或者任何操作数包含<反斜杠>字符,则结果由实现定义。
除非您有可选的XSI扩展名。
因此,我建议您改用printf,这是非常明确的:
格式操作数应用作XBD文件格式符号[…]中描述的格式字符串
文件格式符号:
\n<newline>将打印位置移动到下一行的开头。
还要记住,Ubuntu 15.10和大多数发行版都实现echo,如下所示:
内置Bash:help echo独立的可执行文件:哪个echo
这可能导致一些混淆。