Syntax for name [in words ...]; do commands; done
Expand words, and execute commands once for each member in the resultant list, with name bound to the current member.
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" 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 section Special Parameters). The return status is the exit status of the last command that executes. If there are no items in the expansion of words, no commands are executed, and the return status is zero. An alternate form of the
for command is also supported:
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
First, the arithmetic expression expr1 is evaluated according to the rules described below . 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.
The return value is the exit status of the last command in list that is executed, or false if any of the expressions is invalid.
for is a bash builtin command
# List of manufacturers
for manufacturer in Apple Sony "Hewlett Packard" Nokia
echo "Manufacturer is:" $manufacturer
# The above can also be written as a single line...
for manufacturer in Apple Sony "Hewlett Packard" Nokia; do echo "Manufacturer is:" $manufacturer;done
# Rename a bunch of iPhone screenshot files from IMG_0001.PNG, IMG_0002.PNG...
# to ScreenShot01.png,ScreenShot01.png...
for name in IMG*PNG
do # Work out the new name
newname="$(echo $name | sed "s/IMG_00/ScreenShot/;s/PNG/png/")" # Move/rename the files
echo "renaming $name as $newname"
mv $name $newname
"In expanding the field of knowledge, we but increase the horizon of ignorance" ~ Henry Miller
Related macOS commands:
break - Exit from a loop
while - Execute commands
continue - Resume the next iteration of a while or foreach loop