• shell数组的用法


    在shell里面想获取某个变量的值,使用$符开头,如:$a或者${a}即可。
      获取数组长度
      arr_length=${#arr_number[*]}或${#arr_number[@]}均可,即形式:${#数组名[@/*]} 可得到数组的长度。
      读取某个下标的值
      arr_index2=${arr_number[2]},即形式:${数组名[下标]}
      删除操作
        清除某个元素:unset arr_number[1],这里清除下标为1的数组;
        清空整个数组:unset arr_number;
      分片访问
        分片访问形式为:${数组名[@或*]:开始下标:结束下标},注意,不包括结束下标元素的值。
        例如:${arr_number[@]:1:4},这里分片访问从下标为1开始,元素个数为4。
        ${hosts[*]:0:6}取前六个元素
        : 3 跳过3个
        : -3 只取倒数3个(单个负数要加空格)
        :3:4 跳过3个取4个
        :3:-4 除了前三后4只要中间
      模式替换
        形式为:${数组名[@或*]/模式/新值}
        例如:${arr_number[@]/2/98}
      数组的遍历
        数组遍历我们使用for语句来演示:
        for v in ${arr_number[@]}; do
          echo $v;
        done

      判断元素是否在数组内: 

        project=$1
        projects=( 'project1',‘project2’ ) #数组

        if [[ ${projects[*]} =~ $project ]]; then #使用@ 或 * 可以获取数组中的所有元素,=~是正则匹配
            echo `date +"%Y-%m-%d %H:%M:%S"`" 开始检查工程$project"
        else
          echo `date +"%Y-%m-%d %H:%M:%S"`" 参数指定错误,工程${project}不在监控列表"
        exit 255 #自定义退出代码
        fi

    字典:
    #!/bin/bash

    echo "shell定义字典"
    #必须先声明
    declare -A dic
    dic=([key1]="value1" [key2]="value2" [key3]="value3")
    #追加字典
    dic+=([key4]="value4" [key5]="value5" [key6]="value5")
    echo ${#dic[@]}

    #打印指定key的value
    echo ${dic["key1"]}
    #打印所有key值
    echo ${!dic[*]}
    #打印所有value
    echo ${dic[*]}

    #遍历key值
    for key in $(echo ${!dic[*]})
    do
    echo "$key : ${dic[$key]}"
    done

    echo "shell定义数组"

    #数组
    list=("value1" "value2" "value3")
    #打印指定下标
    echo ${list[1]}
    #打印所有下标
    echo ${!list[*]}
    #打印数组下标
    echo ${list[*]}
    #数组增加一个元素
    list=("${list[@]}" "value3")

  • 相关阅读:
    1833: [ZJOI2010]count 数字计数——数位dp
    【模板】BZOJ 3685: 普通van Emde Boas树——Treap
    【模板】解决二分图匹配的强力算法——Hopcroft-Karp算法
    BZOJ 4516: [Sdoi2016]生成魔咒——后缀数组、并查集
    【模板】二分图匹配/一般图匹配——匈牙利算法/随机匈牙利算法
    【模板】BZOJ 1692:队列变换—后缀数组 Suffix Array
    BZOJ 4241: 历史研究——莫队 二叉堆
    【模板】BZOJ 3781: 小B的询问 莫队算法
    BZOJ 3656: 异或 (组合数取模 CRT)
    【模板】SPOJ FACT0 大数分解 miller-rabin & pollard-rho
  • 原文地址:https://www.cnblogs.com/jinxf/p/10410889.html
Copyright © 2020-2023  润新知