zoukankan      html  css  js  c++  java
  • 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}的区别

  • 相关阅读:
    del命令
    echo命令
    什么是批处理
    ubuntu禁止ping操作(禁用ICMP协议访问)
    树莓派:raspberry pi 3b
    小tips合集
    吐个槽:bose的售后真心差劲!愧对这个顶级音响产品!
    WinSetupFromUSB
    win7 64位下vs不能以管理员身份运行的问题解决
    vs2010中如何设置Visual Assist方便地使用现成的代码编辑器风格
  • 原文地址:https://www.cnblogs.com/ysk123/p/11510718.html
Copyright © 2011-2022 走看看