Shell 更改循环索引的启动器
我想在shell脚本中比较两个没有重组的列表:Shell 更改循环索引的启动器,shell,for-loop,Shell,For Loop,我想在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 我尝试使用“for”循环 ------------代码-------------------- 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}
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”循环
------------代码--------------------
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
----------结束代码------------------
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
但问题是$jdx
有任何解决此问题的提示吗?您可以使用:
$ 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}的形式输出数组,然后大括号扩展处理其余部分。对循环使用c样式:
for ((i=0; i < ${#A[@]}; i++)); do
for ((j=i; j < ${#B[@]}; j++)); do
echo ${A[i]}${B[j]}
done
echo
done
$jdx的确切问题是什么?您从代码中接收到什么值,以及您希望用什么来代替不正确的输出?