2017-09-20 68 views
1

試圖重申內嵌套的數組,數組循環:擊:重申裏面for循環

#!/bin/bash 

aaa=("nine" "ten" "eleven" "twelve") 
bbb=("one" "two" "three" "four" "five" "six" "seven" "eight") 
ccc=("thirteen" "fourteen") 


for b in "${bbb[@]}" ; do 
    for i in "${!aaa[@]}" ; do 
     echo "$b" "${aaa[i]}" "${ccc[i]}" 
    done 
done 

我得到這個,在十一二行沒有收到ccc元素:

one nine thirteen 
one ten fourteen 
one eleven 
one twelve 
two nine thirteen 
two ten fourteen 
two eleven 
two twelve 
three nine thirteen 
three ten fourteen 
three eleven 
three twelve 
four nine thirteen 
four ten fourteen 
four eleven 
four twelve 
five nine thirteen 
five ten fourteen 
five eleven 
five twelve 
six nine thirteen 
six ten fourteen 
six eleven 
six twelve 
seven nine thirteen 
seven ten fourteen 
seven eleven 
seven twelve 
eight nine thirteen 
eight ten fourteen 
eight eleven 
eight twelve 

所需的輸出:

one nine thirteen 
one ten fourteen 
one eleven thirteen 
one twelve fourteen 
two nine thirteen 
two ten fourteen 
two eleven thirteen 
two twelve fourteen 
three nine thirteen 
three ten fourteen 
three eleven thirteen 
three twelve fourteen 
four nine thirteen 
four ten fourteen 
four eleven thirteen 
four twelve fourteen 
five nine thirteen 
five ten fourteen 
five eleven thirteen 
five twelve fourteen 
six nine thirteen 
six ten fourteen 
six eleven thirteen 
six twelve fourteen 
seven nine thirteen 
seven ten fourteen 
seven eleven thirteen 
seven twelve fourteen 
eight nine thirteen 
eight ten fourteen 
eight eleven thirteen 
eight twelve fourteen 
+0

你想'$ {CCC [我%$ {#CCC [@]}]}'或笛卡爾積 –

+0

@NahuelFouilleul所需的輸出顯然不是一個笛卡爾產品。 –

+0

@NahuelFouilleul。那是我的錯誤。在匆忙中忘記了「不」。 –

回答

5

從預期的輸出,你需要一個模"${ccc[i%${#ccc[@]}]}"而不是"${ccc[i]}"

0

試試這個

aaa=("nine" "ten" "eleven" "twelve") 
bbb=("one" "two" "three" "four" "five" "six" "seven" "eight") 
ccc=("thirteen" "fourteen") 
echo ${!aaa[@]} 
count=0; 
for b in "${bbb[@]}" ; do 
    for i in "${!aaa[@]}" ; do 
     ((count = count==1 ? 0 : 1)) 
     echo "$b" "${aaa[i]}" "${ccc[count]}" 
    done 
done