Shell数组只支持一维数组,并且不用限定数组大小。数组的下标从0开始。
定义数组
数组的定义在Shell中非常简单,常见的定义方式为以()
来表示数组,数组元素之间需要用空格分割。
例如:
arrs=(one two three four five)
多行定义
arrs=(
one
two
three
four
five
)
指定下标定义
arrs[0]=one
arrs[1]=two
arrs[2]=three
arrs[3]=four
arrs[4]=five
这里的下标数你可以任意指定,范围没有限制,而且下标并不是必须连续。
读取数组
读取数组中的某一个元素,常用方式如下:
${array_name[index]}
例如:
value=${arrs[2]}
这时候如果我们通过echo 输出value值,我们可以看到如下效果:
echo $value
three
这个脚本如下:
#!/bin/bash
arrs=(one two three four five)
value=arrs[2]
echo $value
以上内容我们保存为array_test.sh
脚本,然后我们在终端中运行它。
$ chmod +x array_test.sh
$ ./array_test.sh
输出结果就会如下:
three
输出数组中的全部元素,使用特殊符号*
和@
echo ${arrs[*]}
echo ${arrs[@]}
它们都将输出如下结果:
one two three four five
获取数组长度
使用数组时我们常常需要获取数组长度,我们可以通过以下方式在Shell中获取数组长度。
len=${#arrs}
len=${#arrs[*]}
len=${#arrs[@]}
我们注意到,在Shell中获取数组长度上,需要使用#
符号放在数组名称之前。
在Shell中如何获取数组整个长度我们已经知道,那么如何获取具体元素的长度呢,看下面的介绍。
len=${#arrs[n]}
这里的n
表示具体下标的数字,如果你要获取数组中下标为2的数组长度,那么Shell语句就如下所示:
len=${#arrs[2]}
删除数组中的元素
在Shell中删除原属我们可以通过unset进行删除,具体格式如下:
unset arrs[n]
其中的n
就是数组元素的下标,可以根据要删除的数组元素填写下标。
如果我们要删除整个数组也可以通过unset来进行删除,具体方式如下:
unset arrs
以上的语句执行后,arrs整个数组的元素将会被删除。
拼接数组
不同的数组如果要组合成一个数组,我们可以通过Shell的数组拼接将两个数组拼接到一起。拼接的方法是我们首先使用@
和*
来获取数组的全部元素,然后通过Shell数组定义的方式将两个数组拼接到一起,示例如下:
#!/bin/bash
arr1=(1 2 3 4 5 qq)
arr2=(6 7 8 9 10 wechat)
arr3=(${arr1[@]} ${arr2[@]})
echo ${arr3[@]}
输出结果:
1 2 3 4 5 qq 6 7 8 9 10 wechat