更改

2014-04-03 18 views
0

我想沒有shell腳本重組來比較兩個列表for循環指數首發:更改

A=(a b c d e) 
B=(b c d e f) 

然後打印組合

ab 
ac 
ad 
ae 
af 

bc 
bd 
be 
bf 

... 


de 
df 

ef 

我試着用「for」循環

------------------------ CODE ------------------------ ----------------

arr_a=(a b c d e f) 


for i in 0 1 2 3 4 
do 


jdx=$(($i + 1)) 


     for j in {$jdx..5}   
     do 

     echo ${arr_a[$i]}'_'${arr_a[$j]} 

     done 

done 

-------------------- END CODE ------------------------- -----------

但問題是$jdx

解決此問題的任何提示?

+0

什麼是$ JDX確切的問題?你從代碼中得到了什麼值,以及你期望代替錯誤輸出的結果是什麼? – masrtis

回答

0

您可以使用brace expansion做到這一點:

$ A=(a b c d e) 
$ B=(b c d e f) 
$ eval echo $(echo {${A[@]}}{${B[@]}} | tr ' ' ',') 
ab ac ad ae af bb bc bd be bf cb cc cd ce cf db dc dd de df eb ec ed ee ef 

這是第一次輸出數組形式{a,b,c,d,e}{b,c,d,e,f},然後括號展開負責剩下的照顧。

0

使用C語言風格的for循環:

for ((i=0; i < ${#A[@]}; i++)); do 
    for ((j=i; j < ${#B[@]}; j++)); do 
     echo ${A[i]}${B[j]} 
    done 
    echo 
done 
ab 
ac 
ad 
ae 
af 

bc 
bd 
be 
bf 

cd 
ce 
cf 

de 
df 

ef