有人可以解释一下这里正在发生什么吗?所有的内容都是在同一个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
。其次,在IFS=/ x="${array[*]}"
中,赋值x="${array[*]}"
没有像之前那样影响${array[*]}
的值。