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-aarray_name
向数组中追加元素(按照下标号依次添加,不能断):
array_name[${array_name[*]}]=xxxxxx
关联数组:
declare-Aarray_name array_name=([index_name1]="val1"[index_name2]="val2"...)
删
删除数组中的某元素:
unsetarray[INDEX]
改
1)
array=("a""b""c""d") echo${array[*]} abcd echo${array[0]} a array[0]="z" echo${array[*]} zbcd
2)
调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。
a=(12345) echo${a[@]/3/100} 1210045 echo${a[@]} 12345 a=(${a[@]/3/100}) echo${a[@]} 1210045
查
引用数组中的元素:${数组名[索引]}
引用第一个元素
注意:省略[index]表示引用下标为0的元素
引用所有所有元素
数组的长度(数组中元素的个数):${#array_name[*或者@]}
取出指定元素
${array_name[1]}
数组切片:${array_name[*]:offset:number}
offset:要跳过的元素个数
number:要取出的元素个数,取偏移量之后的所有元素:${array_name[*]:offset}
练习题:
练习1:生成10个随机数保存于数组中,并找出最大值和最小值
max=0 forIin{1..9} do rand[$I]=$RANDOM&&[${rand[$I]}-gt$max]&&max=${rand[$I]} echo${rand[$I]} done echomax:$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[*]} }原文链接:https://www.f2er.com/bash/391179.html