Gunner
Gunner

Reputation: 31

Nested For loop in shell script

Im trying to use nested for loop in shell script to get output like below:

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  

Something like

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

Upvotes: 2

Views: 9503

Answers (2)

Ruslan Osmanov
Ruslan Osmanov

Reputation: 21522

In Bash/Zsh/Ksh93 (at least):

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

Output

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

And the following should work in the standard command language as well:

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

Upvotes: 2

NinjaGaiden
NinjaGaiden

Reputation: 3146

#!/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

Upvotes: 0

Related Questions