在bash数组的数组 [英] Array of arrays in bash
本文介绍了在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屋!
查看全文