在shell脚本中嵌套For循环

时间:2016-11-29 02:44:51

标签: shell loops

我试图在shell脚本中使用嵌套for循环来获得如下输出:

i=1 j=1 iteration 1
i=2 j=2 iteration 2  
i=3 j=1 iteration 3  
i=4 j=2 iteration 4  
i=5 j=1 iteration 5  
i=6 j=2 iteration 6  

这样的东西
for (( i=1; i <= 6;i++ ))
do
        for ((j=1;j<2;j++))
        do
        echo i=$i;echo j=$j;echo iteration $i
        ...
        done
done

2 个答案:

答案 0 :(得分:1)

在Bash / Zsh / Ksh93(至少)中:

let iter=0

for (( i=1; i <= 6; ))
do
  for (( j=1; j<=2; j++, i++ ))
  do
    printf "i=%d j=%d iteration %d\n" $i $j $(( ++iter ))
  done
done

输出

i=1 j=1 iteration 1
i=2 j=2 iteration 2
i=3 j=1 iteration 3
i=4 j=2 iteration 4
i=5 j=1 iteration 5
i=6 j=2 iteration 6

以下内容也适用于标准命令语言:

iter=0
i=0

while (( i <= 6 ))
do
  j=0
  while (( ++j <= 2 && ++i <= 6 ))
  do
    printf "i=%d j=%d iteration %d\n" $i $j $(( ++iter ))
  done
done

答案 1 :(得分:0)

#!/usr/bin/env bash

for i in `seq 1 6`; do
        if [[ $((i%2)) -eq 1 ]]; then
                echo "i=$i j=1 iteration $i"
        else
                echo "i=$i j=2 iteration $i"
        fi

done