一、聲明
普通數組:declare -a ARRAY (不必須聲明,可直接使用)
關聯數組:declare -A ARRAY(必須聲明後纔可使用)
二者不可相互轉化
二、賦值
1、一次賦值一個元素
a[0]=‘abc’
a[1]='123
2、一次賦值全部元素
a=(“a” “b” “c”…)
a=({1…10})
a=(*.sh)
3、只賦值特定元素
a=([0]=“a” [3]=“c”)
4、交互式賦值
read -a ARRAY (用空格隔開)
三、顯示所有數組
declare -a
四、引用
${ARRAY[n]} (若不指定下表,則爲ARRAY[0])
${ARRAY[|@]} (顯示所有)
${#ARRAY[]}(數組的個數)
五、刪除
刪除單個:
unset ARRAY[n]
刪除整個:
unset ARRAY
六、處理
跳過前n個,取後面m個
${ARRAY[*]:n:m}
例如:跳過前兩個,取後面所有
echo ${ARRAY[*]:2}
七、追加
ARRAY[${#ARRAY[*]}]=value
八、關聯數組(必須先聲明)
**好處:**下標可自定義
declare -A name
name[ceo]=li
name[cto]=zhang
name[coo]=wang
九、小練習
1、求10個隨機數的數組中,最大與最小值
①、非簡化版(自己寫的)
#!/bin/bash
n[0]=$RANDOM
max=${n[0]=$RANDOM}
min=${n[0]=$RANDOM}
for i in {1..9};do
n[i]=$RANDOM
if [ ${n[i]} -gt $max ];then
max=${n[i]}
elif [ ${n[i]} -lt $min ];then
min=${n[i]}
fi
done
echo ${n[*]}
echo $max
echo $min
②、簡化版
#!/bin/bash
for i in {0..9};do
n[i]=$RANDOM
[ $i -eq 0 ] && max=${n} && min=${n} && continue
[ ${n[i]} -gt $max ] && max=${n[i]}
[ ${n[i]} -lt $min ] && min=${n[i]}
done
echo ${n[*]}
echo $max
echo $min
②、求當前目錄下所有偶下標的行數和
#!/bin/bash
line=0
num=(/data/*)
for i in $(seq 0 $[${#num[*]}-1]);do
if [ $[$i%2] -eq 0 ];then
let line+=$(wc -l ${num[i]}|cut -d' ' -f1)
fi
done
echo "line:$line"