bash之数组-增删改查
简介:
存储多个元素的连续的内容空间
数组名:自定义
索引:编号从0开始,属于数值索引:
注意:索引也可支持使用自定义的格式,而不仅仅是数值格式;bash的数组支持稀疏格式:
增
声明数组:declare -a array_name
关联数组:declare -A array_name
数组元素的赋值方式
1)一次只赋值一个元素:
array_name[INDEX]=value weekdays[0]="sundary"
2)一次赋值全部元素
array_name=("val1" "val2" "val3" ...)
3)只赋值特定元素
array_name=([0]="val1" ...)
4)交互式赋值元素
read -a array_name
向数组中追加元素(按照下标号依次添加,不能断):
array_name[${array_name[*]}]=xxxxxx
关联数组:
declare -A array_name array_name=([index_name1]="val1" [index_name2]="val2" ...)
删
删除数组中的某元素:
unset array[INDEX]
改
1)
array=("a" "b" "c" "d") echo ${array[*]} a b c d echo ${array[0]} a array[0]="z" echo ${array[*]} z b c d
2)
调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。
a=(1 2 3 4 5) echo ${a[@]/3/100} 1 2 100 4 5 echo ${a[@]} 1 2 3 4 5 a=(${a[@]/3/100}) echo ${a[@]} 1 2 100 4 5
查
引用数组中的元素:${数组名[索引]}
引用第一个元素
注意:省略[index]表示引用下标为0的元素
引用所有所有元素
数组的长度(数组中元素的个数):${#array_name[*或者@]}
取出指定元素
${array_name[1]}
数组切片:${array_name[*]:offset:number}
offset:要跳过的元素个数
number:要取出的元素个数,取偏移量之后的所有元素:${array_name[*]:offset}
练习题:
练习1:生成10个随机数保存于数组中,并找出最大值和最小值
max=0 for I in {1..9} do rand[$I]=$RANDOM && [ ${rand[$I]} -gt $max ] && max=${rand[$I]} echo ${rand[$I]} done echo max:$max
练习2:定义一个数组,数组中的元素是/var/log目录下以.log结尾的文件的名字,要统计其下标(【】)为偶数的文件中的行数之和
思路:
整数运算:
{ a=1 b=2 c=$[$a+$b] or c=$(expr $a + $b) } { file=(/var/log/*.log) echo ${#file[*]} echo ${file[*]} }
练习3:生成10个随机数,升序或降序排序:
时间: 2024-10-24 04:54:40