Nested for loop in Linux Shell Script
By: Dorris
As you see the if statement can nested, similarly loop statement can be nested. You can nest the for loop. To understand the nesting of for loop see the following shell script.
$ vi nestedfor.sh
for (( i = 1; i <= 5; i++ )) ### Outer
for loop ###
do
for (( j = 1 ; j <= 5; j++ )) ### Inner for
loop ###
do
echo -n
"$i "
done
echo "" #### print the new line ###
done
Run the above script as follows:
$ chmod +x nestedfor.sh
$ ./nestefor.sh
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
Here, for each value of i the inner loop is cycled through 5 times, with the varible j taking values from 1 to 5. The inner for loop terminates when the value of j exceeds 5, and the outer loop terminets when the value of i exceeds 5.
Following script is quite intresting, it prints the chess board on screen.
$ vi chessboard
for (( i = 1; i <= 9; i++ )) ### Outer for loop ###
do
for (( j = 1 ; j <= 9; j++ )) ### Inner for loop
###
do
tot=`expr $i + $j`
tmp=`expr $tot % 2`
if [ $tmp -eq 0 ]; then
echo
-e -n "\033[47m "
else
echo
-e -n "\033[40m "
fi
done
echo -e -n "\033[40m" #### set back background colour to
black
echo "" #### print the new line ###
done
Run the above script as follows:
$ chmod +x chessboard
$ ./chessboard
Above shell script cab be explained as follows:
Command(s)/Statements
|
Explanation
|
for (( i = 1; i <= 9; i++ )) do |
Begin the outer loop which runs 9 times., and the outer loop terminets when the value of i exceeds 9 |
for (( j = 1 ; j <= 9; j++ )) do |
Begins the inner loop, for each value of i the inner loop is cycled through 9 times, with the varible j taking values from 1 to 9. The inner for loop terminates when the value of j exceeds 9. |
tot=`expr $i + $j` tmp=`expr $tot % 2` |
See for even and odd number positions using these statements. |
if [ $tmp -eq 0 ]; then |
If even number posiotion print the white colour block (using echo -e -n "\033[47m " statement); otherwise for odd postion print the black colour box (using echo -e -n "\033[40m " statement). This statements are responsible to print entier chess board on screen with alternet colours. |
done |
End of inner loop |
echo -e -n "\033[40m" |
Make sure its black background as we always have on our terminals. |
echo "" | Print the blank line |
done | End of outer loop and shell scripts get terminted by printing the chess board. |
Archived Comments
Comment on this tutorial
- Data Science
- Android
- AJAX
- ASP.net
- C
- C++
- C#
- Cocoa
- Cloud Computing
- HTML5
- Java
- Javascript
- JSF
- JSP
- J2ME
- Java Beans
- EJB
- JDBC
- Linux
- Mac OS X
- iPhone
- MySQL
- Office 365
- Perl
- PHP
- Python
- Ruby
- VB.net
- Hibernate
- Struts
- SAP
- Trends
- Tech Reviews
- WebServices
- XML
- Certification
- Interview
categories
Related Tutorials
smskannel SMS gateway run in background
Running jar files in background in ssh window
Can't locate ExtUtils/MakeMaker.pm in @INC ...
Could not open '': No such file or directory at lib/ExtUtils/MM_Unix.pm line 2697
make: Nothing to be done for `all'.
How to burn your CD / DVD ISO image using Nero Burning ROM (Ahead Software) on Windows
How to burn your CD / DVD ISO image using Media Creator (Adaptec/Roxio) on Windows
How to burn your CD / DVD ISO image using Nero Express (Ahead Software) on Windows
How to burn your CD / DVD ISO image using NISO Recorder V2 Power Toy on Windows
Compiling and Installing software from source in Linux