Shell数组总结

一、定义: 

  • 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小
  • 数组元素的下标由0开始
  • Shell 数组用括号来表示,元素用”空格”符号分割开

1、直接定义整个数组 

语法格式:array_name=(value1 value2 … valuen)

例如: 

my_array=(A B “C” D)

 2、使用下标来定义数组:

array_name[0]=value0 
array_name[1]=value1 
array_name[2]=value2

 二、读取

  • 1、读取单个值的格式为:${array_name[index]}
my_array=(A B "C" D)
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"

执行结果为

第一个元素为: A

第二个元素为: B

  • 2、使用@ 或 * 获取数组中所有元素:${array_name[*]} 或者${array_name[@]}
my_array=(A B "C" D)
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

#执行脚本,输出结果如下所示:
#数组的元素为: A B C D 
#数组的元素为: A B C D
  • 3、获取数组长度: ${#array_name[*]} 或者 ${#array_name[@]}
my_array=(A B "C" D)
echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"

#执行脚本输出结果如下
#数组元素个数为: 4
#数组元素个数为: 4

三、遍历

  • 1、标准for循环遍历
array=( A B C D 1 2 3 4)
for(( i=0;i<${#array[@]};i++)) ; do
    #${#array[@]}获取数组长度用于循环
    echo ${array[i]};
done;
  • 2、for ... in遍历,不使用数组下标
array=(A B C D 1 2 3 4)
for element in ${array[@]}
#也可以写成for element in ${array[*]}
do
    echo $element
done
  • 3、for ... in遍历,使用数组下标
array=( A B C D 1 2 3 4)
for i in "${!arr[@]}";   
do   
    printf "%s\t%s\n" "$i" "${arr[$i]}"  
done  
  • 4、while循环遍历
array=( A B C D 1 2 3 4)
i=0  
while [ $i -lt ${#array[@]} ]  
#当变量(下标)小于数组长度时进入循环体
do  
    echo ${ array[$i] }  
    #按下标打印数组元素
    let i++  
done  

 

 

你可能感兴趣的:(Shell)