shell:数组及其遍历

数组

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。

与大部分编程语言类似,数组元素的下标由0开始。

Shell 数组用括号来表示,元素用”空格”符号分割开,语法格式如下:

array_name=(value1 value2 … valuen)

例如:my_array=(A B “C” D)

我们也可以使用下标来定义数组:

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

数组中的主要方法

  • 读取数组 :读取数组元素值的一般格式是:${array_name[index]}
  • 获取数组中的所有元素:使用@ 或 * 可以获取数组中的所有元素,
  • 获取数组的长度:获取数组长度的方法与获取字符串长度的方法相同

遍历数组

[work@master]$ cat test.sh 
#!/bin/bash
cwd=$(cd $(dirname $0); pwd)
function main()
{
    echo "shell 数组介绍"
    echo "1.读取数组元素值的一般格式,例如:"
    my_array=(A B "C" D)
    echo "第一个元素为: ${my_array[0]}"
    echo "第二个元素为: ${my_array[1]}"
    echo "第三个元素为: ${my_array[2]}"
    echo "第四个元素为: ${my_array[3]}"
    
    echo "2.获取数组中的所有元素: 使用@ 或 * 可以获取数组中的所有元素,例如:"
    my_array=(A B "C" D)
    echo "数组的元素为: ${my_array[*]}"
    echo "数组的元素为: ${my_array[@]}"
  
    echo "3.获取数组的长度: 获取数组长度的方法与获取字符串长度的方法相同,例如:"
    my_array=(A B "C" D)
    echo "数组元素个数为: ${#my_array[*]}"
    echo "数组元素个数为: ${#my_array[@]}"
 
    echo "***************************************"
    echo "shell 数组遍历的3种方法"
    echo "创建一个数组"
    array=( A B C D 1 2 3 4)
    
    echo "1.标准的for循环"
    for(( i=0;i<${#array[@]};i++)) do
    #${#array[@]}获取数组长度用于循环
    echo ${array[i]};
    done;
 
    echo "2.for … in"
    echo "2.1 遍历(不带数组下标)"
    for element in ${array[@]}
    #也可以写成for element in ${array[*]}
    do
    echo $element
    done
 
    echo "2.2 遍历(带数组下标)"
    for i in "${!array[@]}";   
    do 
    printf "%s\t%s\n" "$i" "${array[$i]}"  
    done
   
   echo "3.While循环法"
   i=0  
   while [ $i -lt ${#array[@]} ]  
   #当变量(下标)小于数组长度时进入循环体
   do  
    echo ${array[$i]}  
    #按下标打印数组元素
    let i++  
   done
    
   echo "4.我的示例"
 
   pos=0
   array=( 20200630 20210731 20200831 )
   for element in ${array[@]}
   do
      end_date=$element
      start_date="${element: 0: 6}01"
      let pos++
      echo "序号: echo ${pos}, start_date: ${start_date}, end_date: ${end_date}"
   done
  
 
}
main $@
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值