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}的区别

  • 相关阅读:
    Markdown语法
    简易银行管理系统
    登录sql sever
    MainActivity中R为红色
    PLC STL any数据类型
    Oracle ORA-12541,ORA-12514错误
    Myeclispe下struts-config.xml文件无法图形界面打开
    SSH报错
    Myeclispe 代码自动补全
    Mac下多个jdk自由切换
  • 原文地址:https://www.cnblogs.com/ysk123/p/11510718.html
Copyright © 2011-2022 走看看