shell支持一维数组,包括普通的使用下标的索引数组和关联的键值对数组,下面以例子说明。
创建一个名为foo的索引数组,三个元素a、bear、123以空格分隔放在圆括号内。
$ foo=(a bear 123)
查看索引数组foo的全部元素(使用特殊符号):
$ echo $foo
a
$ echo ${foo}
a
$ echo ${foo[@]}
a bear 123
echo ${foo[*]}
a bear 123
查看索引数组foo的所有下标:
$ echo ${!foo[@]}
0 1 2
查看索引数组foo的元素个数:
$ echo ${#foo[@]}
3
$ echo ${#foo[*]}
3
查看索引数组foo某个位置的元素:
$ echo ${foo[0]}
a
$ echo ${foo[1]}
bear
$ echo ${foo[2]}
123
$ echo ${foo[-1]}
123
$ echo ${foo[-2]}
bear
$ echo ${foo[-3]}
a
修改索引数组foo某个位置的元素:
$ foo[1]=dog
$ echo ${foo[1]}
dog
$ echo ${foo[@]}
a dog 123
$ echo ${!foo[@]}
0 1 2
$ echo ${#foo[@]}
3
给索引数组foo添加元素:
$ foo[3]=x
$ echo ${foo[3]}
x
$ echo ${foo[@]}
a dog 123 x
$ echo ${!foo[@]}
0 1 2 4
$ echo ${#foo[@]}
4
$ foo[10]=how
$ echo ${foo[10]}
how
$ echo ${foo[@]}
a dog 123 x how
$ echo ${!foo[@]}
0 1 2 3 10
$ echo ${#foo[@]}
5
删除索引数组foo某个位置的元素:
$ unset foo[1]
$ echo ${foo[@]}
a 123 x how
$ echo ${!foo[@]}
0 2 3 10
$ echo ${#foo[@]}
4
删除索引数组foo:
unset foo
使用命令declare -A创建一个名为bar的键值对数组,三个键分别为r、green、123,对应的值为red、g、88,格式固定,键放在一对方括号中,用等号进行赋值。
$ declare -A bar=([r]=red [green]=g [123]=88)
下面是对键值对数组bar的一些操作:
$ echo ${bar[@]}
g 88 red
$ echo ${!bar[@]}
green 123 r
$ echo ${#bar[@]}
3
$ echo ${bar[r]}
red
$ echo ${bar[green]}
g
$ echo ${bar[123]}
88
$ bar[123]=99
$ bar[x]=app
$ echo ${bar[*]}
g 99 red app
$ echo ${!bar[*]}
green 123 r x
$ echo ${#bar[*]}
4
$ unset bar[r]
$ echo ${bar[*]}
g 99 app
$ echo ${!bar[*]}
green 123 x
$ echo ${#bar[*]}
3
$ unset bar