bash for loop — iterate over files, list, range

# Over a list of values
for name in Alice Bob Charlie; do
  echo "Hello, $name"
done

# Over files (glob)
for file in *.txt; do
  echo "Processing $file"
done

# Range (brace expansion)
for i in {1..5}; do
  echo $i
done

For loops are the standard way to iterate over lists, files, or ranges in bash.

C-style for loop

for (( i = 0; i < 10; i++ )); do
  echo $i
done

Iterate over an array

items=("one" "two" "three")
for item in "${items[@]}"; do
  echo "$item"
done

# With index
for i in "${!items[@]}"; do
  echo "$i: ${items[$i]}"
done

Iterate over command output (safe)

# Process substitution — handles filenames with spaces
while IFS= read -r file; do
  echo "Found: $file"
done < <(find . -name "*.log")

Break and continue

for file in *.txt; do
  [[ "$file" == skip-* ]] && continue   # skip this iteration
  [[ "$file" == stop.txt ]] && break    # exit the loop
  echo "$file"
done