Ser*_*gey 2171 bash newline echo
在Bash中,试过这个:
echo -e "hello\nworld"
Run Code Online (Sandbox Code Playgroud)
但它不会仅打印换行符\n.如何让它打印换行符?
我正在使用Ubuntu 11.04.
sth*_*sth 2649
你可以printf改用:
printf "hello\nworld\n"
Run Code Online (Sandbox Code Playgroud)
printf比一致行为更一致echo.echo不同版本之间的行为差别很大.
cho*_*oba 1589
你确定你在bash吗?这三种方式对我有用:
echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
Run Code Online (Sandbox Code Playgroud)
Van*_*uan 551
echo $'hello\nworld'
Run Code Online (Sandbox Code Playgroud)
版画
hello
world
Run Code Online (Sandbox Code Playgroud)
$''字符串使用ANSI C引用:
表格的字是特别对待的.单词扩展为字符串,替换为ANSI C标准指定的反斜杠转义字符.
$'string'
Nay*_*Zen 129
你可以随时做echo "".
例如
echo "Hello"
echo ""
echo "World"
Run Code Online (Sandbox Code Playgroud)
Har*_*ani 46
尝试
echo -e "hello\nworld"
hello
world
Run Code Online (Sandbox Code Playgroud)
纳米编辑为我工作.
Unc*_*roh 40
如果有人发现自己在墙上撞墙试图弄清楚为什么同事的剧本不会打印换行符,那么请注意这一点 - >
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
echo $(GET_RECORDS);
Run Code Online (Sandbox Code Playgroud)
如上所述,该方法的实际运行本身可以包裹在回声中,该回声取代可能在该方法本身中的任何回声.显然我为了简洁而淡化了它,发现它并不容易!
然后你可以告诉你的同志,执行函数的更好方法是这样的:
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
GET_RECORDS;
Run Code Online (Sandbox Code Playgroud)
小智 37
仅针对所提出的问题(不是特殊字符等)仅将双引号更改为单引号。
echo -e 'Hello,\nWorld!'
Run Code Online (Sandbox Code Playgroud)
结果是:
Hello,
World!
Run Code Online (Sandbox Code Playgroud)
Sat*_*esh 23
这对我来说是不可思议的,
__CODE__
Cir*_*四事件 21
POSIX 7回音
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e 未定义,反斜杠是实现定义的:
如果第一个操作数是-n,或者如果任何操作数包含<反斜杠>字符,则结果是实现定义的.
除非您有可选的XSI扩展名.
所以printf改用:
格式操作数应用作XBD文件格式表示法中描述的格式字符串[...]
该文件格式符号:
\n <新行>将打印位置移动到下一行的开头.
还要记住,Ubuntu 15.10和大多数发行版都实现echo为:
help echowhich echo这可能会导致一些混乱.
ali*_*oar 16
str='hello\nworld'
$ echo | sed "i$str"
hello
world
Run Code Online (Sandbox Code Playgroud)
要使用 echo 打印新行,请使用:
echo
Run Code Online (Sandbox Code Playgroud)
或者
echo -e '\n'
Run Code Online (Sandbox Code Playgroud)
只需输入
echo
Run Code Online (Sandbox Code Playgroud)
换行
这可以更好地完成
x="\n"
echo -ne $x
Run Code Online (Sandbox Code Playgroud)
-e 选项将解释转义序列的反斜杠
-n 选项将删除输出中的尾随换行符
PS:命令 echo 的作用是始终在输出中包含尾随换行符,因此需要 -n 来关闭该功能(并使其不那么混乱)
您也可以:
echo "hello
world"
Run Code Online (Sandbox Code Playgroud)
这既可以在脚本内运行,也可以从命令行运行。
在命令行中,按Shift+ Enter在字符串内进行换行。
这适用于我的macOS和Ubuntu 18.04
如果您正在编写脚本并且将多次回显换行符作为其他消息的一部分,那么一个很好的跨平台解决方案是将文字换行符放入变量中,如下所示:
newline='
'
echo "first line${newline}second line"
echo "Error: example error message n${newline}${usage}" >&2 #requires usage to be defined
Run Code Online (Sandbox Code Playgroud)
小智 6
我只使用 echo 不带任何参数:
echo "Hello"
echo
echo "World"
Run Code Online (Sandbox Code Playgroud)
如果前面的答案不起作用,并且需要从其函数中获取返回值:
function foo()
{
local v="Dimi";
local s="";
.....
s+="Some message here $v $1\n"
.....
echo $s
}
r=$(foo "my message");
echo -e $r;
Run Code Online (Sandbox Code Playgroud)
只有这个技巧在我正在使用这个 Bash 版本的 Linux 系统上有效:
GNU bash, version 2.2.25(1)-release (x86_64-redhat-linux-gnu)
Run Code Online (Sandbox Code Playgroud)
我的脚本:
echo "WARNINGS: $warningsFound WARNINGS FOUND:\n$warningStrings
Run Code Online (Sandbox Code Playgroud)
输出:
echo "WARNINGS: $warningsFound WARNINGS FOUND:\n$warningStrings
Run Code Online (Sandbox Code Playgroud)
在我的 Bash 脚本中,我和你一样生气,直到我刚刚尝试过:
echo "WARNING : $warningsFound WARNINGS FOUND:
$warningStrings"
Run Code Online (Sandbox Code Playgroud)
只需点击Enter您要插入该跳转的位置即可。现在的输出是:
WARNING : 2 WARNINGS FOUND:\nWarning, found the following local orphaned signature file:
Run Code Online (Sandbox Code Playgroud)
Bash 4.4 中添加了一个新的 参数扩展来解释转义序列:
${parameter@operator} - E operator扩展是一个字符串,它是带有反斜杠转义序列的参数值,就像
$'…'引用机制一样扩展。
$ foo='hello\nworld'
$ echo "${foo@E}"
hello
world
Run Code Online (Sandbox Code Playgroud)