有人可以解释这里发生了什么。所有这些都在同一个 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[*]}"
并没有像以前那样影响值${array[*]}
,在IFS=/ x="${array[*]}"
.