If you are a programmer, you may have read the last chapter ”with its claim at the outset that bash has an advanced set of programming capabilities ”and wondered where many of the features from conventional languages were. Perhaps the most glaringly obvious "hole" in our coverage thus far concerns flow control constructs like if , for , while , and so on.
Flow control gives a programmer the power to specify that only certain portions of a program run, or that certain portions run repeatedly, according to conditions such as the values of variables , whether or not commands execute properly, and others. We call this the ability to control the flow of a program's execution.
Almost every shell script or function that's been shown thus far has had no flow control ”they have just been lists of commands to be run! Yet bash , like the C and Bourne shells , has all of the flow control abilities you would expect and more; we will examine them in this chapter. We'll use them to enhance the solutions to some of the programming tasks we saw in the last chapter and to solve tasks that we will introduce here.
Although we have attempted to explain flow control so that non-programmers can understand it, we also sympathize with programmers who dread having to slog through yet another tabula rasa explanation. For this reason, some of our discussions relate bash 's flow-control mechanisms to those that programmers should know already. Therefore you will be in a better position to understand this chapter if you already have a basic knowledge of flow control concepts.
bash supports the following flow control constructs:
Execute a list of statements if a certain condition is/is not true
Execute a list of statements a fixed number of times
Execute a list of statements repeatedly while a certain condition holds true
Execute a list of statements repeatedly until a certain condition holds true
Execute one of several lists of statements depending on the value of a variable
In addition, bash provides a new type of flow-control construct:
Allow the user to select one of a list of possibilities from a menu
We will now cover each of these in detail.