环境变量有一个很酷的特性就是,它们可作为数组使用。数组是能够存储多个值的变量。这
些值可以单独引用,也可以作为整个数组来引用。
要给某个环境变量设置多个值,可以把值放在括号里,值与值之间用空格分隔。
mytest=(one two three four five)
没什么特别的地方。如果你想把数组像普通的环境变量那样显示,你会失望的。
$ echo $mytest
one
$
只有数组的第一个值显示出来了。要引用一个单独的数组元素,就必须用代表它在数组中位
置的数值索引值。索引值要用方括号括起来。
$ echo ${mytest[2]} three
$
窍门 环境变量数组的索引值都是从零开始。这通常会带来一些困惑。
要显示整个数组变量,可用星号作为通配符放在索引值的位置。
$ echo ${mytest[*]}
one two three four five
$
也可以改变某个索引值位置的值。
$ mytest[2]=seven $
$ echo ${mytest[*]} one two seven four five
$
甚至能用unset命令删除数组中的某个值,但是要小心,这可能会有点复杂。看下面的例子。
$ unset mytest[2] $
$ echo ${mytest[*]} one two four five
$
$ echo ${mytest[2]} $ echo ${mytest[3]} four
$
这个例子用unset命令删除在索引值为2的位置上的值。显示整个数组时,看起来像是索引
里面已经没这个索引了。但当专门显示索引值为2的位置上的值时,就能看到这个位置是空的。
最后,可以在unset命令后跟上数组名来删除整个数组。
$ unset mytest $
$ echo ${mytest[*]} $
有时数组变量会让事情很麻烦,所以在shell脚本编程时并不常用。对其他shell而言,数组变
量的可移植性并不好,如果需要在不同的shell环境下从事大量的脚本编写工作,这会带来很多不
便。有些bash系统环境变量使用了数组(比如BASH_VERSINFO),但总体上不会太频繁用到。