2015-04-21 40 views
0

我有一個輸入txt文件,每行代表一個值,我需要捕獲並分配給一個變量進行處理。我創建了一個如下所示的數組,但我想創建一個使用這些變量的循環來處理.txt中每行的下面(底部)if語句。我嘗試以下,但它不遍歷,它只是指定每行的值相同:遍歷數組值並分配給新變量shell

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 

回答

0

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

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

如果我正確地理解你的代碼,你也可以閱讀seq_fy.txt直接與while循環:

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

我這樣做原本,它基本上只是吐出輸入文件。我知道它通過它騎自行車,但我需要使用pov1,pov2,pov3 ....作爲參數連接字符串到外部應用程序(不相關),所以我的目標是分別處理每一行(現在pov)直到它到達文件的末尾.....概念上類似於「for $ {pov [@]} -lt 50],然後導出pov = $ pov [i]」或「if [!-z $ {pov [ @]}「然後導出pov = $ pov [i] else end」.....當前我已經分別導出了每個pov,然後對每個pov都有一個if,但這不是有效的 –