这里的字符串是否进行分词?
Do here-strings undergo word-splitting?
引用 Bash Reference Manual 和 man bash
(版本 4.3):
[<i>n</i>]<<< <i>word</i>
The word
undergoes brace expansion, tilde expansion, parameter and
variable expansion, command substitution, arithmetic expansion, and
quote removal. Pathname expansion and word splitting are not
performed.
word
不应进行分词。但是,使用这个简单的代码:
var="a b"
cat <<< $var
#output:
#a b
cat <<< "$var"
#output:
#a b
我错过了什么?这取决于 bash
的版本还是手册中有错误?我正在使用 GNU bash, version 4.3.48
.
在 bash-4.4-alpha 和 bash-4.4-beta 之间发生了从拆分这里字符串到不拆分它们的变化。引用自 CHANGES
:
Bash no longer splits the expansion of here-strings, as the documentation has always said.
所以旧 Bash 版本的手册提到了它,但实际上并没有这样做。
引用 Bash Reference Manual 和 man bash
(版本 4.3):
[<i>n</i>]<<< <i>word</i>
The
word
undergoes brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed.
word
不应进行分词。但是,使用这个简单的代码:
var="a b"
cat <<< $var
#output:
#a b
cat <<< "$var"
#output:
#a b
我错过了什么?这取决于 bash
的版本还是手册中有错误?我正在使用 GNU bash, version 4.3.48
.
在 bash-4.4-alpha 和 bash-4.4-beta 之间发生了从拆分这里字符串到不拆分它们的变化。引用自 CHANGES
:
Bash no longer splits the expansion of here-strings, as the documentation has always said.
所以旧 Bash 版本的手册提到了它,但实际上并没有这样做。