Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 更改循环索引的启动器_Shell_For Loop - Fatal编程技术网

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}

我想在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}        
        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的确切问题是什么?您从代码中接收到什么值,以及您希望用什么来代替不正确的输出?