2017-06-29 26 views
1

我有一個bash腳本兩個陣列,每個陣列有相同數量的元素,我需要2個數組的每一個元素寫的第一陣列中的每個元素在for循環中如何在shell腳本中使用兩個數組進行循環?

第一陣列名稱:ARR_MPOINT

秒數組名稱:ARR_LVNAME

片的腳本:

ARR_MPOINT=(/tmp /var /log); 
ARR_LVNAME=(lv_tmp lv_var lv_log) 

for MPOINT in "${ARR_MPOINT[@]}" 
    do 
     echo "/dev/mapper/VolGroup01-${ARR_LVNAME[@]}  $MPOINT   xfs  defaults  1 2" 
    done 

I need to print below output 

/dev/mapper/VolGroup01-lv_tmp  /tmp  xfs  defaults  1 2 
/dev/mapper/VolGroup01-lv_var  /var  xfs  defaults  1 2 
/dev/mapper/VolGroup01-lv_log  /log  xfs  defaults  1 2 
+1

嵌套的for循環,超過'ARR_LVNAME'迭代應該做的伎倆。剛剛意識到你需要3次迭代而不是9次,而是在同一個索引處訪問兩個數組。 –

+1

在'{0 .. $ ARRAY_SIZE}'中使用'for i'循環。然後像'echo「/ dev/mapper/VolGroup01 - $ {ARR_LVNAME [i]} $ {ARR_MPOINT [i]} ...」' –

+0

如何編輯$ {ARR_LVNAME [@]}? – Ramana

回答

0

您可以用lv_取代/只有使用第一ARR AY得到輸出:

for MPOINT in "${ARR_MPOINT[@]}"; do 
    echo "/dev/mapper/VolGroup01-${MPOINT//\//lv_} $MPOINT xfs defaults 1 2" 
done 
1

如果陣列具有相同的長度,你可以通過索引訪問元素:

for ((i=0; i<${#ARR_MPOINT[@]}; i++)); do 
    echo "/dev/mapper/VolGroup01-${ARR_LVNAME[i]}  ${ARR_MPOINT[i]}   xfs  defaults  1 2" 
done 
+0

謝謝這將工作。我會試試這個。 – Ramana

+0

@rama:請看看:[當有人回答我的問題時我應該怎麼做?](http://stackoverflow.com/help/someone-answers) – Cyrus

相關問題