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。
同时数组下标可以不连续。
允许访问“越界”的下标,不会报错,返回空。
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[*]}"