Echo newline in Bash prints literal
在bash,本想:P></
1 2 | echo -e"hello world" |
但它不会打印在newline,
我使用Ubuntu 11.04。P></
你可以用
1 2 3 | printf"hello world " |
你确定你在巴什吗?为我工作,三种方式:
1 2 3 4 5 6 | echo -e"Hello world" echo -e 'Hello world' echo Hello$' 'world |
1 2 | echo $'hello world' |
印刷品
1 2 | hello world |
Words of the form
$'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard.
你可以一直这样做。
例如
1 2 3 | echo"Hello" echo"" echo"World" |
如果有人发现自己的头撞在墙上,试图弄明白为什么同事的脚本不会打印新行,请注意这一点->
1 2 3 4 5 6 7 8 | #!/bin/bash function GET_RECORDS() { echo -e"starting the process"; } echo $(GET_RECORDS); |
如上所述,方法的实际运行本身可能被一个echo包裹,该echo取代了方法本身可能存在的任何echo。很明显,我是为了简洁而把它稀释的,这不容易被发现!
然后你可以告诉你的同志们,一个更好的执行职能的方法是这样的:
1 2 3 4 5 6 7 8 | #!/bin/bash function GET_RECORDS() { echo -e"starting the process"; } GET_RECORDS; |
尝试
1 2 3 4 | echo -e"hello world" hello world |
在Nano编辑器中为我工作。
这对我在拉斯宾很有用,
1 2 | echo -e"hello\ world" |
1 2 3 4 5 | str='hello world' $ echo | sed"i$str" hello world |
POSIX 7在回声
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
没有定义
If the first operand is -n, or if any of the operands contain a
character, the results are implementation-defined.
除非您有可选的XSI扩展。
所以用
format operand shall be used as the format string described in XBD File Format Notation [...]
文件格式符号:
Move the printing position to the start of the next line.
还要记住,Ubuntu 15.10和大多数发行版都实现了
- bash内置:
help echo 。 - 一个独立的可执行文件:
which echo 。
这会导致一些混乱。
它在Centos为我工作:
1 2 | echo -e""hello world"" |
您还可以执行以下操作:
1 2 | echo"hello world" |
这既适用于脚本内部,也适用于命令行。在命令行中,按shift+enter在字符串中进行换行。
这在我的MacOS和Ubuntu 18.04上都适用
对于那些无法与这些解决方案一起使用,并且需要从函数中获取返回值的人,这里还有一个条目:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function foo() { local v="Dimi"; local s=""; ..... s+="Some message here $v $1 " ..... echo $s } r=$(foo"my message"); echo -e $r; |
在我用这个bash开发的Linux中,只有这个技巧有效:
1 | GNU bash, version 2.2.25(1)-release (x86_64-redhat-linux-gnu) |
希望它能帮助有类似问题的人。
我的剧本:
1 2 | echo"WARNINGS: $warningsFound WARNINGS FOUND: $warningStrings |
输出:
1 2 | WARNING : 2 WARNINGS FOUND: Warning, found the following local orphaned signature file: |
在我的bash脚本中,我和你一样疯狂,直到我尝试:
1 2 | echo"WARNING : $warningsFound WARNINGS FOUND: $warningStrings" |
只需按Enter键就可以插入该跳转。现在的输出是:
1 2 | WARNING : 2 WARNINGS FOUND: Warning, found the following local orphaned signature file: |
最好这样做
1 2 3 | x=" " echo -ne $x |
-e选项将解释转义序列的后斜线。-n选项将删除输出中的尾随换行符
ps:命令echo的作用是在输出中始终包含一个尾随的换行符,因此需要-n来关闭它(并使其不那么混乱)。
你也可以用回音和大括号,
1 2 3 | $ (echo hello; echo world) hello world |
有时您可以传递由空格分隔的多个字符串,它将被解释为
例如,当对多行注释使用shell脚本时:
1 2 | #!/bin/bash notify-send 'notification success' 'another line' 'time now '`date +"%s"` |
在
${parameter@operator} - E operator The expansion is a string that is the value of parameter with
backslash escape sequences expanded as with the$'…' quoting
mechanism.
1 2 3 4 5 | $ foo='hello world' $ echo"${foo@E}" hello world |