迭代数组值并分配给新变量shell

时间:2015-04-21 19:43:42

标签: arrays linux shell for-loop session-variables

我有一个输入txt文件,每行代表我需要捕获的值并分配给变量进行处理。我已经创建了一个数组,如下所示,但我想创建一个循环使用这些变量来处理.txt中每一行的下面(底部)if语句。我尝试了以下内容,但它没有迭代,它只是为每一行分配相同的值:

for i in ${pov[@]}
do
 echo ${pov[1]}
done

output:
$ ./sed
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16

这是我正在使用的输入和数组

##$cat seq_fy.txt
spt_seq_01,fy15
spt_seq_01,fy16
spt_seq_02,fy15
spt_seq_02,fy16

##array:
$ cat sed
pov=($(sed \n  seq_fy.txt))

##can echo pov:
$ cat sed
pov=($(sed \n  seq_fy.txt))
echo ${pov[1]}

$ ./sed
SPT_SEQ_010,FY16

我需要获取每个pov值($ {pov [1]}到[50])并像当前在if语句/ for循环中那样处理,如下所示,直到数组为空。问题是pov确定了其他值。

##current if statement being used and working after declaring each POV separately
##not using an array for the current process
if [ ! -z $pov01 ];
then
export step=${pov01//\"/}
export step03_01=$step
export pov=${pov01//\"/}
.... (using $pov as variable in connection string)
fi

1 个答案:

答案 0 :(得分:0)

您需要echo ${pov[i]},而不是${pov[1]}

for i in ${pov[@]}
do
    echo ${pov[i]}
done

如果我正确理解您的代码,您还可以使用while循环直接阅读seq_fy.txt

cat seq_fy.txt | while read seqvar; do
    echo $seqvar
done