几个关于Bash中数组的创建和引用的例子,用于参考。
#!/bin/bash
echo ========== array 1 ==========
a1=("a" "b" "c")
echo ${#a1[@]}
echo ${a1[@]}
echo ${!a1[@]}
for ((i=0; i < ${#a1[@]}; i++)); do
echo ${a1[$i]}
done
echo ========== array 2 ==========
declare -a a2
for ((i=1; i<10; i++)); do
a2[$i]=$i
done
echo ${!a2[@]}
echo ${a2[@]}
for ((i=0; i < ${#a2[@]}; i++)); do
echo ${a2[$i]}
done
for i in ${!a2[@]}; do
echo ${a2[$i]}
done
unset a2[4]
echo ${!a2[@]}
echo ${a2[@]}
echo ========== array 3 ==========
for ((i=1; i<10; i++)); do
a3[$i]=$i
done
echo ${a3[@]}
echo ${a3[@]:3:6}
echo ${a3[@]: -4}
补充说明
一、创建数组
a=(1 2 3 4 5)
c=('a' 'b' 'c')
a=([0]=1 [1]=2 [2]=3 [3]=4)
l="1 2 3 4 5"
a=($l) # 不可以直接令 a=("1 2 3 4 5")
a[0]='bee'
a[1]='cat'
a[2]='dog'
a[4]='fox'
# 关联数组,字典
unset a # 删除数组a
declare -A a # 声明a为关联数组
a=(['k1']=10 ['k2']=20 ['k3']=30)
echo ${a['k2']} # 返回20
二、操作数组
a=(1 2 3 4 5 6 7 8 9)
# 获取数组长度
l=${#a[@]}
l=${#a[*]} # 使用“*”与“@”一样,后续如无特别说明,仅用“@”示例
# 获取数组所有索引值
ii=${!a[@]}
# 索引、遍历
echo ${a[@]} # 全部元素
echo ${a[0]} # 第一个元素
echo ${a[-1]} # 倒数第一个元素
# 切片 ${数组名[@]:起始索引:提取长度}
echo ${a[@]:2:3} # 从索引2开始提取3个元素,返回 3,4,5
echo ${a[@]: -4:2} # 从索引-4开始提取2个元素,注意负号前的空格,返回 6,7