我想在shell脚本中比较两个没有重组的列表:
A=(a b c d e)
B=(b c d e f)
然后打印一个组合
ab
ac
ad
ae
af
bc
bd
be
bf
...
de
df
ef
我试过'因为'环
------------------------ 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 :(得分: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}
的形式输出数组,然后括号扩展处理其余的数据。
答案 1 :(得分:0)
使用C风格的循环:
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