微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash之数组增删改查

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[*]}
}

练习3:生成10个随机数,升序或降序排序:

原文地址:https://www.jb51.cc/bash/391179.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐