Linux Unleashed, Third Edition:Shell Programming
-->
Previous
Table of Contents
Next
Iteration Statements
The shell languages also provide several iteration or looping statements. The most commonly used of these is the for statement. In addition to the for loop, there are several others (such as while and until) but they are all variations of the same approach. The forloop is by far the most commonly used in shell programs.
The for Statement
The for statement executes the commands that are contained within it a specified number of times. bash and pdksh have two variations of the for statement. The for statement syntax is the same in both bash and pdksh.
The first form of for statement that bash and pdksh support has the following syntax:
for var1 in list
do
commands
done
In this form, the for statement executes once for each item in the list. This list can be a variable that contains several words separated by spaces or it can be a list of values that is typed directly into the statement. Each time through the loop, the variable var1 is assigned to the current item in the list until the last one is reached.
The second form of for statement has the following syntax:
for var1
do
statements
done
In this form, the for statement executes once for each item in the variable var1. When this syntax of the for statement is used, the shell program assumes that the var1 variable contains all the positional parameters that were passed into the shell program on the command line.
Typically, this form of for statement is the equivalent of writing the following for statement:
for var1 in $@
do
statements
done
The equivalent of the for statement in tcsh is called the foreach statement. It behaves in the same manner as the bash and pdksh for statement. The syntax of the foreach statement is the following:
foreach name (list)
commands
end
The following is an example of the bash or pdksh style of for statement. This example takes as command-line options any number of text files. The program reads in each of these files, converts all the letters to uppercase, and then stores the results in a file of the same name but with a .caps extension.
for file
do
tr a-z A-Z < $file >$file.caps
done
The same example written in tcsh shell language is shown next:
#
foreach file ($*)
tr a-z A-Z < $file >$file.caps
end
The while Statement
Another iteration statement offered by the shell programming language is the while statement. This statement causes a block of code to be executed while a provided conditional expression is true. The syntax for the while statement in bash and pdksh is the following:
while expression
do
statements
done
The syntax for the while statement in tcsh is the following:
while (expression)
statements
end
The following is an example of the bash and pdksh style of while statement. This program lists the parameters that were passed to the program, along with the parameter number.
count=1
while [ -n $* ]
do
echo This is parameter number $count $1
shift
count=expr $count + 1
done
As you will see in the section titled The shift Command, the shift command moves the command-line parameters over one space to the left.
The same program written in the tcsh language is shown next:
#
set count = 1
while ( $* != )
echo This is parameter number $count $1
shift
set count = expr $count + 1
end
The until Statement
The until statement is very similar in syntax and function to the while statement. The only real difference between the two is that the until statement executes its code block while its conditional expression is false, and the while statement executes its code block while its conditional expression is true. The syntax for the until statement in bash and pdksh is
until expression
do
commands
done
The same example that was used for the while statement can be used for the until statement. All you have to do to make it work is negate the condition. This is shown in the following code:
count=1
until [ -z $* ]
do
echo This is parameter number $count $1
shift
count=expr $count + 1
done
The only difference between this example and the while statement example is that the -n test command option (which means that the string has nonzero length) was removed, and the -z test option (which means that the string has zero length) was put in its place.
In practice, the until statement is not very useful because any until statement you write can also be written as a while statement. tcsh does not have an equivalent of the until statement other than rewriting it as a while loop.
Previous
Table of Contents
Next
Wyszukiwarka
Podobne podstrony:
13 (278)rozdzial (276)278 280Dz U 2011 276 1633 zmiana z dnia 2012 01278 279index (276)17 (278)276 279277 278278 279SHSpec 278 6306C25 Routine 2 H276 Ustawa o dochodach jednostek samorządu terytorialnego278 Ustawa o postępowaniu w sprawach dotyczących pomocy publicznej276 277276?4104 wulkanizatorSHSpec 276 6306C19 Summary of Modern Auditingwięcej podobnych podstron