簡體   English   中英

遍歷數組值並分配給新變量shell

[英]iterate through array values and assign to new variables shell

我有一個輸入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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM