我有一个输入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
最佳答案
您需要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