Expand words, and execute commands once for each member in the resultant list, with name bound to the current member.

      for name [in words ...]; do commands; done

      for (( expr1 ; expr2 ; expr3 )) ; do commands ; done

If `in words' is not present, the for command executes the commands once for each positional parameter that is set, as if `in "$@"' had been specified (see Positional Parameters below.)


The words can be a simple list of strings file1.txt file2.txt file3.txt or Apple Sony "Hewlett Packard"

Alternatively, create the words by iterating over the output of another command - so to print the numbers from 1 to 10 with backticks:

for i in `seq 1 10` 
echo "$i"

or with Brace Expansion.

for i in {1..10} 
echo "$i"

or as a one liner:
for i in {1..10}; do echo $i; done

When a wildcard is introduced, then words will match against filenames, * will match every file in the directory.

for thisfile in *; do
   echo "found $thisfile"

The second form of the for command is evaluated thus:

First, the arithmetic expression expr1 is evaluated according to shell arithmetic expression rules.
The arithmetic expression expr2 is then evaluated repeatedly until it evaluates to zero.

Each time expr2 evaluates to a non-zero value, commands are executed and the arithmetic expression expr3 is evaluated.
If any expression is omitted, it behaves as if it evaluates to 1.

Return Status

The Return Status of for will be the exit status of the last command that executes, (if there are multiple expressions then the last command in list .)
If there are no items in the expansion of words, no commands are executed, and the return status is zero.

The return status is false if any of the expressions is invalid.

Positional Parameters

These are assigned from the shell's arguments when the shell is invoked, they can be reassigned using the set builtin command.
Positional parameter N can be referenced as ${N}, or as $N when N consists of a single digit. $1, $2 etc


# Loop through a set of strings:
for m in Apple Sony Panasonic "Hewlett Packard" Nokia
echo "Manufacturer is:" $m
done # or as a single line... for m in Apple Sony Panasonic "Hewlett Packard" Nokia; do echo "Manufacturer is:" $m;done # Loop 100 times: for i in $(seq 1 100); do echo -n "Hello World${i} "; done # Loop through the arguments passed to a function: foo ()
for ARG in "$@";do echo $ARG; done
} # try it
foo abc 123 "Hello World" 'bash rules'

"In expanding the field of knowledge, we but increase the horizon of ignorance" ~ Henry Miller


- Conditionally perform a command
eval - Evaluate several commands/arguments
if - Conditionally perform a command
gawk - Find and Replace text within file(s)
m4 - Macro processor
until - Execute commands (until error)
while - Execute commands while an expression is true.
Equivalent Windows commands: FOR - Conditionally perform a command several times

Copyright © 1999-2017
Some rights reserved