在bash数组的数组 [英] Array of arrays in bash

查看:109
本文介绍了在bash数组的数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图读取其中包含了句号隔开的字段行中输入文件行。
我希望把它们放进一个数组的数组这样我就可以通过他们循环以后。输入似乎是好的,但推是到阵列(INDATA)似乎并不奏效。

在code云:

 输入文件:
GSDB.GOSALESDW_DIST_INVENTORY_FACT.MONTH_KEY
GSDB.GOSALESDW_DIST_INVENTORY_FACT.ORGANIZATION_KEY
INFILE = $ {1}OIFS = $ IFS
IFS =:猫$ {INFILE} |而读线

      行= $ {行//\\./:}
      inarray =($ {}行)
#回声$ {inarray [@]}
#回声$ {#inarray [@]}
#回声$ {inarray [0]}
#回声$ {inarray [1]}
#回声$ {inarray [2]}      INDATA =($ {INDATA [@]}$ {inarray [@]})
DONE
IFS = $ OIFS回声$ {#INDATA [@]}为((i = 0; I< $ {#INDATA [@]};我+ +))

 回声$我
    为((J = 0; J< $ {#INDATA [$ i] [@]}; J ++))
    做
       回声$ {INDATA [$ i] [$ J]}
    DONE
DONE


解决方案

Bash有多维数组的支持。尝试

  =阵列(A B C D)
回声$ {数组[1]}
回声$ {数组[1] [3]}
回声$ {数组[1]退出}

有关技巧如何模拟它们,请参阅高级bash脚本编程指南

I'm attempting to read an input file line by line which contains fields delimited by periods. I want to put them into an array of arrays so I can loop through them later on. The input appears to be ok, but 'pushing' that onto the array (inData) doesn't appear to be working.

The code goes :

Input file: 
GSDB.GOSALESDW_DIST_INVENTORY_FACT.MONTH_KEY
GSDB.GOSALESDW_DIST_INVENTORY_FACT.ORGANIZATION_KEY


infile=${1}

OIFS=$IFS
IFS=":"

cat ${infile} | while read line
do
      line=${line//\./:}
      inarray=(${line})
#      echo ${inarray[@]}
#      echo ${#inarray[@]}      
#      echo ${inarray[0]}
#      echo ${inarray[1]}
#      echo ${inarray[2]}

      inData=("${inData[@]}" "${inarray[@]}")
done 
IFS=$OIFS

echo ${#inData[@]}   

for ((i = 0; i < ${#inData[@]}; i++))
do
 echo $i
    for ((j = 0; j < ${#inData[$i][@]}; j++))
    do
       echo ${inData[$i][$j]}
    done
done

解决方案

Bash has no support for multidimensional arrays. Try

array=(a b c d)
echo ${array[1]}
echo ${array[1][3]}
echo ${array[1]exit}

For tricks how to simulate them, see Advanced Bash Scripting Guide.

这篇关于在bash数组的数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆