zoukankan      html  css  js  c++  java
  • shell练习--关于二维数组的实现问题

    关于二维数组的实现问题:通过查询网友们的记录,可知有两个方法

    方法1:通过通过2次读取赋值,来获取二维数组的方法。

    a=('1 2 3'  '4 5 6'  '7 8 9')
    
    for i in "${a[@]}" ; do
    b=($i) #此时b就相当于二维数组里面的一维数组了,然后可以再次遍历
        for j in "${b[@]}"; do
            #do someting
        done
    done
    

      但是这样写之后,发现一个问题:${a[@]}和${a[*]} 一般情况下都能显示全部的数组元素,但是要实现二维数组的效果,不能使用${a[*]},使用${a[*]}对于for循环而言,直接读取全部的记录

    示例如下:

    arr=('Joe Math990112 89' 'Mike CS991301 100' 'Mary EE990830 95')
    + for i in '"${arr[*]}"'
    + echo Joe Math990112 89 Mike CS991301 100 Mary EE990830 95   #此处打印$i
    Joe Math990112 89 Mike CS991301 100 Mary EE990830 95
    + arr2=($i)
    + echo Joe Math990112 89 Mike CS991301 100 Mary EE990830 95   #此处打印${arr2[*]}
    Joe Math990112 89 Mike CS991301 100 Mary EE990830 95
    

     方法2:使用行列位置来做判断:

    #/bin/bash
    arr4=(Joe Math990112 89 Mike CS991301 100 Mary EE990830 95)
    
    h=0
    for (( h >=0 ;h <= $(expr ${#arr[*]} / 3 );h++))
    do
            name=${arr4[$(expr $h * 3  + 0)]}   #本例中,列数为3,那么对应二维值就是 (0 1 2) (3*1+0 3*1+1 3*1+2)(3*2+0 3*2+1 3*2+2)
            num=${arr4[$(expr $h * 3  + 1)]}
            score=${arr4[$(expr $h * 3  + 2)]}
            echo "$name >> $num >> $score"
    done
    

      

  • 相关阅读:
    String.Intern原来可以减少占用内存···
    一些话···
    javascript 闭包和原型 (转载)
    20100610
    jQuery选择头像
    20100611
    新的一天又开始了····
    13种常用按钮、文本框、表单等CSS样式
    心悸···
    我对她说,你能不能换件衣服?换种心情?换种脾气?她说,可以,换个人就行了···
  • 原文地址:https://www.cnblogs.com/wyf-349/p/11236939.html
Copyright © 2011-2022 走看看