shell中的数组

shell中的数组

数组中可以存放多个值。Bash Shell只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。
数组元素的下标由0开始。

数组初始化

Shell数组用括号来表示,元素用空格符号分割开,语法格式如下:

1
array_name=(value1 ... valuen)

也可以使用下标来定义数组:

1
2
3
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

读取数组

读取数组的一般格式是:

1
${array_name[index]}

读取数组中的所有元素

使用@或*可以获取数组中的所有元素,例如:

1
2
${array_name[@]}
${array_name[*]}

读取数组的长度

1
2
${#array_name[@]}
${#array_name[*]}

删除数组

在Shell中,使用unset关键字来删除数组元素,格式如下:

1
unset array_name[index]

如果不写下标,则会删除整个数组:

1
unset array_name

测试脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
array=(A B C D)
echo ${array}
echo ${array[0]}
echo "the first element of array is ${array[0]}"
echo ${array[@]}
echo ${array[*]}
echo ${#array[@]}
unset array[2]
echo ${array[@]}
echo ${array[2]}
echo ${#array[@]}
# 注意array[2]被移除后,array的长度减少为3,但3的位置仍然空着,导致循环不会输出D
for ((i=0;i<${#array[@]};i++));
do
echo ${array[i]};
done

执行结果:

1
2
3
4
5
6
7
8
9
10
11
A
A
the first element of array is A
A B C D
A B C D
4
A B D

3
A
B