写代码时可能会用到数组,但shell的数组确实非常别扭,当然也可使用其他方式来代替(可能会麻烦一些),本文主要讲解一下数组的使用。
1. 数组的声明
declare -a array #数组名为array
数组的声明可以忽略,不强制要求。
2. 插入数据
2.1 带有下标
array[key]=value #array[0]=1
array=([0]=1 [0]=2)
注:数组下标不是数字,多个非数字的下标只保留最后一个,并且使用任意非数字下标均可访问该值,非数字下标占用下标0的位置,而数字下标不受影响;数字下标可不连续,只保留有效下标
2.2 不带下标
array=(value1 value2 value3) #array=(a b c)
array="value1 value2 value3" #array="a b c"
注:以空格分开,下标从0开始
3. 数组访问
3.1 访问全部值
${array[@]} 或 ${array[*]}
3.2 访问单个值
${array[key]}
3.3 访问区间值
${array[@]:a} #访问从下标a开始的所有值
${array[@]:a:b} #访问从下标a开始到b的所有值
3.4 获取数组长度
${#array[@]} 或 ${#array[*]}
3.5 数组匹配
${array[@]#t*e} #左边开始最短的匹配:"t*e"
${array[@]##t*e} #左边开始最长的匹配:"t*e"
${array[@] %o} #从字符串的结尾开始最短的匹配:"o"
${array[@] %%o} #从字符串的结尾开始最长的匹配:"o"
4. 数组操作
4.1 删除数组
unset array #删除整个数组
注:unset也可清空很多系统变量,如optind
4.2 删除特定下标下的数
unset array[key] #删除某个下标的值
4.3 数组替换
${array[@] /o/m} #第一个"o"会被替换成"m"
${array[@] //o/m} #所有"o"会被替换成"m"
${array[@] /#o/k} #替换字符串前端子串
${array[@] /%o/k} #替换字符串后端子串
阅读(591) | 评论(0) | 转发(0) |