Unix Power Tools
by Jerry Peek
Making a for Loop with Multiple Variables
The normal Bourne shell for loop lets you take a list of items, store the items one by one in a shell variable, and loop through a set of commands once for each item:
I wanted a for loop that stores several different shell variables and makes one pass through the loop for each set of variables (instead of one pass for each item, as a regular for loop does). This loop does the job:
If you have any command-line arguments and still need them, store them in another variable before you do that. Or, you can make the loop this way:
This script uses the shell's eval command to re-scan the contents of the bunch variable and store it in separate variables. Notice the single quotes like s='your files'; this groups the words for eval. The shell removes those single quotes before it stores the value into the s variable.