在Bash中,尝试了以下操作:
echo -e "hello\nworld"
但它不会仅打印换行符\n
。如何使其打印换行符?
我正在使用Ubuntu 11.04。
在Bash中,尝试了以下操作:
echo -e "hello\nworld"
但它不会仅打印换行符\n
。如何使其打印换行符?
我正在使用Ubuntu 11.04。
Answers:
您可以printf
改用:
printf "hello\nworld\n"
printf
比echo
。具有更一致的行为。echo
不同版本之间行为的差异很大。
printf %"s\n" hello world
-如果给出太多参数,printf将重用格式
echo
碰巧支持该-e
选项的情况。
echo
,-e
仅会在输出本身中进行打印,因此我认为此答案是完全有效的,因为echo
此处不一致(除非我们在谈论特定版本)。
你确定你在狂欢吗?为我工作,所有四种方式:
echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
echo Hello ; echo world
-e
param并非在所有* nix操作系统上都存在
echo $'hello\nworld'
版画
hello
world
$''
字符串使用ANSI C引用:
表格中的单词经过特殊处理。该单词扩展为string,并按ANSI C标准的规定替换了反斜杠转义的字符。
$'string'
你总能做到echo ""
。
例如
echo "Hello"
echo ""
echo "World"
echo ""
对我有用,我认为这是打印新行的最简单形式,即使它不能直接回答问题。干杯。
echo -en "\n"
。
echo
足以获得空行
尝试
echo -e "hello\nworld"
hello
world
在nano
编辑器中为我工作。
从手册页:
-e
启用反斜杠转义的解释
如果有人发现自己在墙上撞头试图找出为什么同事的脚本不会打印换行符的机会,请注意->
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
echo $(GET_RECORDS);
如上所述,方法的实际运行本身可以包装在回声中,该回声将取代方法本身中可能存在的任何回声。显然,为了简洁起见,我对此不屑一顾,发现它并不是那么容易!
然后,您可以通知您的同志,执行功能的更好方法如下:
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
GET_RECORDS;
POSIX 7回显
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
未定义,反斜杠是实现定义:
如果第一个操作数为-n,或者任何操作数包含<backslash>字符,则结果是实现定义的。
除非您具有可选的XSI扩展名。
因此,我建议您改用以下方式printf
:
格式操作数应用作XBD文件格式符号[...]中描述的格式字符串
该文件格式符号:
\ n <newline>将打印位置移至下一行的开头。
还请记住,Ubuntu 15.10和大多数发行版都实现echo
为:
help echo
which echo
可能会导致一些混乱。
只需输入
echo
换行
str='hello\nworld'
$ echo | sed "i$str"
hello
world
我的剧本:
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:
您还可以将回声与大括号一起使用,
$ (echo hello; echo world)
hello
world
echo hello; echo world
有时您可以传递多个由空格分隔的字符串,它将被解释为\n
。
例如,当使用shell脚本进行多行通知时:
#!/bin/bash
notify-send 'notification success' 'another line' 'time now '`date +"%s"`
\n
。它被解释为程序的单独参数,程序本身可以在新行上显示该参数,但这并不意味着它\n
在任何时候都已转换为参数,并且完全依赖于程序。
这把我带到了那里。
outstuff=RESOURCE_GROUP=[$RESOURCE_GROUP]\\nAKS_CLUSTER_NAME=[$AKS_CLUSTER_NAME]\\nREGION_NAME=[$REGION_NAME]\\nVERSION=[$VERSION]\\nSUBNET-ID=[$SUBNET_ID]
printf $outstuff
产量:
RESOURCE_GROUP=[akswork-rg]
AKS_CLUSTER_NAME=[aksworkshop-804]
REGION_NAME=[eastus]
VERSION=[1.16.7]
SUBNET-ID=[/subscriptions/{subidhere}/resourceGroups/makeakswork-rg/providers/Microsoft.Network/virtualNetworks/aks-vnet/subnets/aks-subnet]