小编nxn*_*nev的帖子

Bash 中可能的错误?: foo() { echo "${var[0]}"; }; var=(bar baz) foo

操作系统: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).

这只会发生在我身上吗?这是预期的行为吗,我错过了什么?或者这是一个错误?

bash array

22
推荐指数
3
解决办法
2712
查看次数

标签 统计

array ×1

bash ×1