我试图逐行读取一个输入文件,其中包含以句点分隔的字段。
我想把它们放入一个数组中,以便稍后再循环一遍。输入似乎是确定的,但是将“推”到数组(inData)上似乎不起作用。
我想把它们放入一个数组中,以便稍后再循环一遍。输入似乎是确定的,但是将“推”到数组(inData)上似乎不起作用。
代码:
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不支持多维数组。尝试
array=(a b c d) echo ${array[1]} echo ${array[1][3]} echo ${array[1]exit}
有关如何模拟它们的技巧,请参阅Advanced Bash Scripting Guide。