Shell数组及相关操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/asty9000/article/details/87010354

Shell中的数组与其他语言不同的是,没有限制数组的大小,理论上可以存放无限的数据。数组中的元素类型可以不同。Shell数组的长度不是固定的,定义之后还可以添加元素。要注意的是常见的Shell只支持一维数组,不支持多维数组。数组元素通过下标访问,下标为非0整数或表达式。数组长度为数组中元素的个数。

定义

Shell中数组用“()”定义,数组元素之间用空格分隔,有两种定义方式,第一种是依次为数组元素赋值,另一种是为特定位置元素赋值。

#从下标0开始依次添加元素
arr1=(1 2 "csdn")
#在下标2、5、10处添加元素
arr2=([2]=1 [5]=2 [10]="csdn")

操作

获取元素

通过下标可获取数组元素。

${array_name[index]}

其中array_name为数组变量,index为下标,如获取arr1第二个元素(下标为1)。

${arr1[1]}

输出结果为2。

index为“@”或“*”时可获取数组所有元素:

${arr1[@]}
${arr1[*]}

添加元素

在数组指定位置添加元素,下标可以是数组中任意未赋值元素的下标值,如在数组arr2的下标6处添加元素3:

arr2[6]=3

 还可以通过“+=”在最大的有值下标后追加一个或多个元素,添加的元素必须用“()”包围起来,多个元素用空格分隔,如arr2后追加值4和5:

arr2+=(4 5)

 还可以通过重新创建数组的方式添加元素,引号是必须的,并且只能用“@”不能用“*”,具体见注意事项

arr2=("${arr2[@]}" 4 5)

还有一种追加元素的方法,但是要确保数组的下标是连续的才行,并且一次只能追加一个元素,如arr1后追加3:

arr1[${#arr1[@]}]=3
arr1[${#arr1[*]}]=3

修改元素

修改数组元素只需要使用待修改元素的下标重新赋值即可。

删除元素

使用unset命令可以删除数组中指定下标的元素。如删除数组arr2下标为6的元素。

unset arr2[6]

长度

通过“@”或“*”将数组扩展为列表然后通过“#”可以获取数组元素的个数,即数组的长度。如获取数组arr2的长度,结果为3。

${#arr2[@]}
${#arr2[*]}

此外还可以通过具体下标来获取某个具体元素的长度,如获取数组arr2下标为10的元素的长度,结果为4。

${#arr2[10]}

猜你喜欢

转载自blog.csdn.net/asty9000/article/details/87010354