操作系统:Ubuntu 16.04.3
外壳:Bash 4.3.48
我知道可以像 中那样临时更改变量的内容var=value command,这可能IFS= read -r var是最值得注意的情况。
而且,感谢 Greg 的 wiki,我也明白:
# Why this
foo() { echo "$var"; }
var=value foo
# And this does work
var=value; echo "$var"
# But this doesn't
var=value echo "$var"
Run Code Online (Sandbox Code Playgroud)
我不明白的是:
$ foo() { echo "${var[0]}"; }
$ var=(bar baz) foo
(bar baz)
Run Code Online (Sandbox Code Playgroud)
据我所知(并遵循前面示例的逻辑),它应该打印bar,而不是(bar baz).
这只会发生在我身上吗?这是预期的行为吗,我错过了什么?或者这是一个错误?