• shell数组


    一、数组概述

    1.数组的概念

      是一种容器,可以同时存放多个数据值。

    2.数组的特点

    1.数组是一种引用数据类型。
    2.数组当中的多个数据,类型 必须统一。
    3.数组长度在程序运行期间不可改变。

    3.数组定义方法

    方法1
      数组名=(value0 value1 value2 …)

    方法2
      数组名=([0]=value [1]=value [2]=value …)

    方法3
      列表名=“value0 value1 value2 …”
      数组名=($列表名)

    方法4
      数组名[0]=“value”
      数组名[1]=“value”
      数组名[2]=“value”

    二、数组包括的数据类型

    1.数据类型

      (1)数值类型
      (2)字符类型(字符串)
    使用" " 或 ’ ’ 定义,防止元素当中有空格,元素按空格分割

    2.获取数组长度

      arr_number=(1 2 3 4 5)
      echo ${#arr_number[*]} 或 echo ${#arr_number[@]}

    3.获取数据列表

      echo ${arr_number[*]}

      echo ${arr_number[@]}

    4.读取某个下标赋值

      arr_index2=${arr_number[2]}
      echo $arr_index2


    三、使用数组

    1.数组遍历,循环中使用数组

    #!/bin/bash
    arr=(10 20 30 40 50 60 )
    for i in ${arr[@]}
    do
    
    echo $i
    
    done

    2.数组切片

    arry=(1 2 3 4 5 6)
    echo ${arry[*]}
    
    echo ${arry[@]} #输出整个数组,此处*与@相同
    
    echo ${arry[@]:0:2} #获取 ${数组名[@或*]:起始位置:长度} 的值
    
    echo ${arry[@]:2:2}
    
    echo ${arry[@]:3:4}

    3.数组替换

    方法一:替换所有符合条件的

    格式:${数组名[*或@]/源参数值/将要替换的参数值}

    arr2=(1 2 3 4 5)
    #临时替换:将数组arr1中的参数值3替换为66,但原来的数组中的参数值并不会改变
    echo ${arr2[*]/3/66}
    echo ${arr2[*]}
    
    #永久替换:可通过重新赋值实现
    arr2=(${arr2[*]/3/66})
    echo ${arr2[*]}

    方法二:替换单个,指定下标替换。

    arry=(1 2 3 4 5 6)
    echo ${arry[*]}
    arry[0]=7
    echo ${arry[*]}


    4.数组删除

      格式:unset 数组名[索引] #删除单个

      unset 数组名 #删除整个数组

    5.数组追加元素

    方法一:单个添加

    arr=(1 2 3 4 5 6 7)
    echo ${arr[6]}
    arr[7]=8
    arr[8]=9
    echo ${arr[*]}

    方法二:增加数组长度填加

    arr4=(1 2 3 4 5 6 7)
    echo ${arr4[*]}
    arr4[${#arr4[*]}]=8 #根据长度添加参数
    echo ${arr4[*]}



    方法三:重新定义数组

    arr4=(1 2 3 4 5 6 7)
    echo ${arr4[*]}
    arr4=("${arr4[@]}" 8 9 10) #加上新参数重新定义数组
    echo ${arr4[*]}

    双引号不能省略,否则数组中存在包含空格的元素时会按空格将元素拆分成多个
    不能将“@”替换为“*”,如果替换为“* ”,不加双引号时与“@”的表现一致,加双引号时,会将数组array_name中的所有元素作为一个元素添加到数组中


    6.函数返回数组

    #!/bin/bash
    
    #用于求数组中所有元素的累加和
    test2 () {
    newarr1=($@)
    arrlist=${newarr1[*]}
    sum=0
    
    for i in $arrlist
    do
    sum=$[$sum+$i]
    done
    echo $sum
    
    }

    #用于把原数组中所有元素值乘以2后生成一个新的数组并输出

    test3 () {
    newarr2=($@)
    length=${#newarr2[@]}
    for ((j=0;j<$length;j++))
    do
    newarr2[$j]=$[${newarr2[$j]} * 2]
    done
    echo ${newarr2[*]}
    
    }
    ######main######
    
    arry=(10 20 30 40 50)
    echo "原数组的列表为:${arry[@]}"
    res1=`test2 ${arry[@]}`
    echo "test1中的新数组的累加和为:$res1"

    【参考文档】

    原文链接:https://blog.csdn.net/weixin_55613232/article/details/116988585

  • 相关阅读:
    libevent中的bufferevent原理
    libevent中的事件机制
    libevent中数据缓冲区buffer分析
    libevent中最小堆实现算法解析
    我眼中的WebViewJavascriptBridge(图解)
    Tinyhttpd精读解析
    app微信支付的集成步骤
    java工厂模式的测试
    java Annotation 注解的使用
    android 连接蓝牙打印机 BluetoothAdapter
  • 原文地址:https://www.cnblogs.com/gered/p/16404305.html
Copyright © 2020-2023  润新知