1. 程式人生 > >bash之數組增刪改查

bash之數組增刪改查

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之數組增刪改查