Shell 数组深入

1 不声明直接使用

数组可以不通过( )进行初始化,直接对元素赋值。

arr1[0]="xiaobuteach.com"
arr1[1]="linux"
arr1[3]="html"
echo "第1个元素:${arr1[0]}"
echo "第2个元素:${arr1[1]}"
echo "第3个元素:${arr1[3]}"
 
echo "数组的所有下标:${!arr1[*]}"
 
echo "下标为100的元素:${arr1[100]}"

当通过 arr1[下标]=值 对元素进行赋值时,即声明了数组arr1。

同时数组下标可以不连续。

允许访问“越界”的下标,不会报错,返回空。

img

2 Shell数组的理解

1)天然就是动态数组,可以任意添加元素;

2)数组下标会不连接;

3)不存在数组越界:当访问不存在的下标时,会返回空。

4)本质相当一个LinkedMap,key值为各个下标;

对于不连续数组,遍历数组最安全的两种方式:

for item in ${arr[*]}
for index in ${!arr[*]}

实际运用中,尽可能还是使用连续数组,简化代码,可读性强。

3 Shell 数组操作2

${arr[*]:index1} 获取数组下标index1开始到结束的元素。

${arr[*]:index1:count} 获取数组下标index1开始的count个元素。

unset 删除元素

示例

arr1=("xiaobuteach" "Linux" "Shell" "HTML" "CSS" "JavaScript")

echo "数组的第3个元素之后的内容:${arr1[*]:2}"
echo "数组的第3个元素之后的2个元素的内容:${arr1[*]:2:2}"

unset arr1[2]
echo "所有下标:${!arr1[*]}"

img