在Shell中循环遍历多个列表进行循环

时间:2019-05-06 20:55:34

标签: shell

有一种使用itertools.product在python中执行此操作的方法,但是有没有办法在shell中执行此操作?

L1 = 'a b c'
L2 = '1 2'
L3 = 'x y'

for x, y, z in L1, L2, L3:
do
   echo x,y,z
done

我希望结果看起来像这样

a1x
a1y
a2x
a2y
b1x
b1y
...

1 个答案:

答案 0 :(得分:3)

如果您知道列表是什么,则可以使用大括号扩展名:

$ printf '%s\n' {a,b,c}{1,2}{x,y}
a1x
a1y
a2x
a2y
b1x
b1y
b2x
b2y
c1x
c1y
c2x
c2y

但是,如果列表位于三个数组中,则必须执行嵌套循环:

l1=(a b c); l2=(1 2); l3=(x y)
for i in "${l1[@]}"; do
    for j in "${l2[@]}"; do
        for k in "${l3[@]}"; do
            echo "$i$j$k"
        done
    done
done