如何打印新行?这只会打印\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 "hello
world"
这在脚本内部和命令行中都有效。
在命令行上,按Shift+Enter键在字符串内进行换行。
这适用于我的macOS和Ubuntu 18.04(仿生海狸)系统。
我的脚本:
echo "WARNINGS: $warningsFound WARNINGS FOUND:\n$warningStrings
输出:
WARNING : 2 WARNINGS FOUND:\nWarning, found the following local orphaned signature file:
在我的Bash脚本中,我一直像你一样生气,直到我尝试了:
echo "WARNING : $warningsFound WARNINGS FOUND:
$warningStrings"
只需按Enter键即可插入跳转。现在的输出是:
WARNING : 2 WARNINGS FOUND:
Warning, found the following local orphaned signature file:
如果您正在编写脚本,并且将多次将换行符作为其他消息的一部分进行回显,那么一个不错的跨平台解决方案是在变量中添加一个文本换行符,如下所示:
newline='
'
echo "first line${newline}second line"
echo "Error: example error message n${newline}${usage}" >&2 #requires usage to be defined
str='hello\nworld'
$ echo | sed "i$str"
hello
world
Bash 4.4中添加了一个新的参数扩展,用于解释转义序列:
${parameter@operator}-E操作员展开是一个字符串,它是参数的值反斜杠转义序列扩展为$“…”引号机械装置
$ foo='hello\nworld'
$ echo "${foo@E}"
hello
world