码迷,mamicode.com
首页 > 编程语言 > 详细

bash之数组增删改查

时间:2017-08-27 10:08:46      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:linux   bash   array   

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个随机数,升序或降序排序:

本文出自 “zhaoyfcomeon-成长之路” 博客,请务必保留此出处http://zhaoyfcomeon.blog.51cto.com/8429349/1959588

bash之数组增删改查

标签:linux   bash   array   

原文地址:http://zhaoyfcomeon.blog.51cto.com/8429349/1959588

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!