【发布时间】:2014-04-03 04:22:15
【问题描述】:
谁能解释一下这里发生了什么。所有这些都在同一个 shell 中连续执行。
$ array=(a b c)
$ echo "${array[*]}"
a b c
到目前为止一切顺利。
$ IFS=/ echo "${array[*]}"
a b c
没关系,扩展发生在整行执行之前。
$ IFS=/ x="${array[*]}"
$ echo $x
a b c
同样,扩展首先发生,x 得到了那个值。
$ echo "${array[*]}"
a/b/c
但${array[*]} 已更改,并且更改是永久性的。
$ x="${array[*]}"
$ echo $x
a b c
好的,这很正常,我认为 - 原始的默认 IFS 值用于扩展此赋值中的数组变量。
$ echo "${array[*]}"
a/b/c
$
但这对我来说完全没有意义。首先,这里没有使用默认的IFS。其次,赋值x="${array[*]}" 并没有像之前在IFS=/ x="${array[*]}" 中那样影响${array[*]} 的值。
【问题讨论】: