以下示例显示了将一个换行符添加到here-string的情况。
为什么要这样做?
xxd -p <<<'a'
# output: 610a
xxd -p <<<'a
'
# output: 610a0a
简单的答案是因为ksh是用这种方式编写的(并且bash是兼容的)。但是选择这种设计是有原因的。
大多数命令要求输入文本。在unix世界中,文本文件由一系列行组成,每行以换行符结尾。因此,在大多数情况下,需要最后一个换行符。一个特别常见的情况是使用命令替代来获取命令的输出,以某种方式对其进行处理,然后将其传递给另一个命令。命令替换除去最后的换行符;<<<
放回去。
tmp=$(foo)
tmp=${tmp//hello/world}
tmp=${tmp#prefix}
bar <<<$tmp
Bash和ksh无论如何都不能操纵二进制数据(它不能处理空字符),因此它们的功能面向文本数据也就不足为奇了。
在<<<
下面的字符串语法大多只是为了方便反正,就像<<
这里的文档。如果不需要添加最后的换行符,请使用echo -n
(在bash中)或printf
和管道。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句