for - macOS


The for command in macOS is used for iterating over a series of values in a shell script. It is primarily designed to perform repetitive tasks efficiently, applying the same set of commands to multiple items, such as files, output from commands, or a list of strings.


The basic syntax of the for loop is as follows:

for name [in words ...]; do commands; done
  • name is the variable that takes the value of each item in words during the iterations.
  • words represents a list of items over which the loop will iterate. If in words is omitted, for loops over the positional parameters.

Enhanced for-loop syntax:

for (( expr1; expr2; expr3 )); do commands; done
  • expr1, expr2, and expr3 are arithmetic expressions, similar to the initialization, condition, and increment expressions in languages like C or Java.


The for command does not have options or flags. Its behavior is controlled entirely by the syntax and structure of the loop construct itself.


Basic Loop:

for i in 1 2 3; do
  echo "Number $i"


Number 1
Number 2
Number 3

Loop through files:

for file in *.txt; do
  echo "Contents of $file:"
  cat "$file"

C-style for-loop:

for ((i = 0; i < 5; i++)); do
  echo "Counting $i"

Common Issues

  • Syntax errors: Common mistakes include missing semicolons or do keywords. Ensure all components of the loop are included.
  • Unexpected globbing: When iterating over file patterns, ensure files that match the pattern exist, otherwise the loop might not execute or behave unexpectedly.


for can be used with other commands to automate complex tasks:

for file in $(ls); do
  grep -H "search_term" $file

This script loops through all files in a directory, searching each one for “search_term” and printing the filename and line containing it.

  • while – Executes commands as long as a specified condition is true.
  • until – Similar to while, but executes as long as the condition is false.
  • bash – The shell that interprets the for command.
  • echo, cat, grep – Common commands used within for loops for various tasks.

For more details, consult the man pages of related commands (man bash, man echo, etc.) for detailed documentation and additional usage examples.