• linux shell 中数组的定义和for循环遍历的方法


    linux 中定义一个数据的语法为:

    variable=(arg1 arg2 arg3 ....)
    

    中间用空格分开。数组的下标从0开始。

    1 获取下标为n的元素:

    variable[n]
    

    而且不存在数组下标溢出的情况,如果 n>= 数组的长度,那么为空,不会报错。

    2 获取数组长度

    ${#variable[@]}
    

    或者

    ${#variable[*]}
    

    那么如何用for遍历呢?一共有两种方式:

    for i in ${variable[@]}; do
    
    # do something....
    
    done
    
    for i in $(seq 0 ${#variable[@]}); do
    
    e=${variable[$i]}
    
    # do something....
    
    done
    

    以上两种方法 把 @ 换成 * 也行。

    但上面
    for i in $(seq 0 ${#variable[@]}); do
    这个是大于等于0,小于等于variable长度的;也就是说遍历次数要比variable长度多一次;可以通过修正i值来使其相等:

    i=`expr $i + 1`
    

    附:shell数组常用操作

    一、声明数组

    1)array[key]=value # array[0]=one,array[1]=two
    2)declare -a array # array被当作数组名
    3)array=( value1 value2 value3 ... )
    4)array=( [1]=one [2]=two [3]=three ... )
    5)array="one two three" # echo ${array[0|@|*]},把array变量当作数组来处理,但数组元素只有字符串本身

    二、访问数组

    1)${array[key]} # ${array[1]}

    三、删除数组

    1)unset array[1] # 删除数组中第一个元素
    2)unset array # 删除整个数组

    四、计算数组的长度

    1)${#array}
    2)${#array[0]} #同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的区别

  • 相关阅读:
    display:block;inline;inline-block大总结
    img图片inline-block总结
    定时器
    获取样式
    UmiJS
    vue 点击当前路由重新加载该路由
    Support for the experimental syntax 'decorators-legacy' isn't currently enab -- 装饰器@
    js 改变匹配到的字符串的颜色
    with
    页面从输入 URL 到页面加载显示完成
  • 原文地址:https://www.cnblogs.com/ysk123/p/11510718.html
Copyright © 2020-2023  润新知