2016-11-29 80 views
1

我試着使用嵌套的for循環shell腳本得到的輸出象下面這樣:嵌套的for循環中的shell腳本

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 
+0

什麼是你的問題?你問的是如何讓'j'在1和2之間交替取決於'i'是奇數還是偶數? – yelsayed

+0

這不是一個嵌套循環問題。 「$ j」問題的更多偶數/奇數 – NinjaGaiden

+0

我希望j在1和2之間交替,但不取決於我是奇數還是偶數。 – Gunner

回答

0

在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 

輸出UT

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 
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