A while loop repeats as long as its test succeeds. Updating the loop variable moves the script toward the exit.

Program

Play the script to watch count decrease until the loop finishes.

while_loop.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash

count=3
while (( count > 0 )); do
  echo "tick:$count"
  count=$((count - 1))
done
echo "done"
  1. count ← 3

    3count=34while (( count > 0 )); do
    values this step3count
  2. path ← loop

    3count=34while (( count > 0 )); do5  echo "tick:$count"
    values this steplooppath3count
  3. echo "tick:$count"

    4while (( count > 0 )); do5  echo "tick:$count"6  count=$((count - 1))
    outputtick:3
    values this step3count
  4. count ← 2

    5  echo "tick:$count"6  count=$((count - 1))7done
    values this step3 2count
  5. path ← loop

    3count=34while (( count > 0 )); do5  echo "tick:$count"
    values this steplooppath2count
  6. echo "tick:$count"

    4while (( count > 0 )); do5  echo "tick:$count"6  count=$((count - 1))
    outputtick:2
    values this step2count
  7. count ← 1

    5  echo "tick:$count"6  count=$((count - 1))7done
    values this step2 1count
  8. path ← loop

    3count=34while (( count > 0 )); do5  echo "tick:$count"
    values this steplooppath1count
  9. echo "tick:$count"

    4while (( count > 0 )); do5  echo "tick:$count"6  count=$((count - 1))
    outputtick:1
    values this step1count
  10. count ← 0

    5  echo "tick:$count"6  count=$((count - 1))7done
    values this step1 0count
  11. path ← exit

    3count=34while (( count > 0 )); do5  echo "tick:$count"
    values this stepexitpath0count
  12. echo "done"

    7done8echo "done"
    outputdone

Count Down

  1. count starts at 3.
  2. The loop runs while count > 0.
  3. Each pass prints the current count.
  4. Each pass subtracts 1.
  5. When count reaches 0, the script prints done. | Before pass | Printed line | Next count | | --- | --- | --- | | 3 | tick:3 | 2 | | 2 | tick:2 | 1 | | 1 | tick:1 | 0 |
while loop `while` checks its condition before each iteration.
loop exit The loop stops once the condition command returns a nonzero status.

Exercise: while_loop.sh

Use a while loop to count down from 3, print each tick, and print done at the end