2014-04-30 90 views
1

我已經在這裏搜索並搜索了答案,並且我認爲在bash中作爲noob的組合,不知道正確的方式來執行此操作,並且不搜索正確的關鍵字意味着我無法完全擺脫最後的障礙。將兩個數組變量傳遞到單個循環中

我正在編寫一個基本的bash腳本,根據逗號分隔的數組變量的內容在文件中創建配置行。它適用於單個變量,但是當我嘗試並結合兩個數組變量時,它不起作用。我試過在循環內循環,並且當我想要它與其創建的其他5行循環時,它們會一個接一個地創建這些行。

這兩個變量具有相同的迭代次數。例如:

  • ARR1 = SITENAME1,SITENAME2,SITENAME3
  • ARR2 = 12:AC:23:BF:12:CA,22:德:A2:BF:21:AC,01:E4:32: F0:12:C4

,我想他們一起進入循環:

  • SITENAME1($ Y)與12:AC:23:BF:12:CA($ X)
  • SITENAME2($ y)與22:de:a2:bf:21:ac($ x)
  • SITENAME3($ Y)與01:E4:32:F0:12:C4($ x)的

下面是代碼提取物:

arr1=$(echo $sites | tr "," "\n") 
arr2=$(echo $mastermacs | tr "," "\n") 
IFS="," read -a arr1 <<< "$sites" 
IFS="," read -a arr2 <<< "$mastermacs" 
for y in "${!arr1[@]}"; do 
# for x in "${arr2[@]}"; do 
    n=$(($n+1)) 
    echo "config flexconnect group ${arr1[y]} add"$'\r' >> Flex-cfg.txt 
    echo "config flexconnect group ${arr1[y]} ap add ${arr2[x]} "$'\r' >> Flex-cfg.txt 
    echo "config flexconnect group ${arr1[y]} predownload master ${arr1[y]}_AP01"$'\r' >> Flex-cfg.txt 
    echo "config flexconnect group ${arr1[y]} predownload enable"$'\r' >> Flex-cfg.txt 
    echo "config flexconnect group ${arr1[y]} predownload start primary"$'\r' >> Flex-cfg.txt 
# done 
done 

正是這種線特別是I」米試圖與2個值迭代(順便說一句,我只用$y$x用它作爲很好,我剛剛被修修補補):

echo "config flexconnect group ${arr1[y]} ap add ${arr2[x]} "$'\r' >> Flex-cfg.txt 

但因爲它代表它只是把每一次的第一個。值Y是名稱,值X是MAC地址。

我要麼非常接近要麼完全錯誤。所以可以做些什麼幫助!

+0

你能告訴裏面有什麼ARR1和ARR2? – choroba

+0

arr1只是字符串的字符。 arr2是MAC地址。 – danpez

+0

這段代碼的一個問題是'arr1'和'arr2'實際上不是數組;它們只是嵌入換行符的字符串。 'arr1 =($(echo $ sites | tr「,」「\ n」))'會更多(儘管不完全)正確。 (雖然下面的'read'語句會覆蓋'arr1'的值,所以初始分配是沒有意義的。) – chepner

回答

0
IFS=, read -a sz <<< "$sites" 
IFS=, read -a mz <<< "$mastermacs" 
fx='config flexconnect group' 
for x in ${!sz[*]} 
do 
    echo "$fx ${sz[x]} add" 
    echo "$fx ${sz[x]} ap add ${mz[x]}" 
    echo "$fx ${sz[x]} predownload master ${sz[x]}_AP01" 
    echo "$fx ${sz[x]} predownload enable" 
    echo "$fx ${sz[x]} predownload start primary" 
    echo 
done 
  • 不要使用arr1。您可以迷失在代碼相當快,如果你的變量 名沒有任何意義

  • 我增加了額外的空echo,以幫助可讀性輸出

+0

感謝史蒂文的及時回覆。我想要實現的是將每個站點和MAC一起循環。即:$站點中的第一個是$ mastermacs中的第一個MAC。第二個在$ site中是第二個循環,第二個在mastermacs中有第二個等等。可能有更好的方法,但是我對這個東西很陌生,所以有點像一個盲人摸索他的手杖...... – danpez

+0

對不起史蒂文,我應該提到,並不完全。就像我在兩個循環中一樣,它爲$ sites中的每個站點重複使用$ mastermac中的所有MAC。我想要做的是將每個站點與每個MAC對齊。 – danpez

+0

是的,這兩個變量具有相同的迭代次數。我已經更新了我的解釋,如果不明確,我表示歉意。 – danpez