A recovery path can retry once after a failed first attempt. The script records how many attempts were needed and the final result.

Program

Play the script to choose the first status and see the recovery summary.

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

first_status=1
if [ "$first_status" -ne 0 ]; then
    attempts=2
    result="recovered"
else
    attempts=1
    result="clean"
fi
echo "attempts=$attempts result=$result"
#!/usr/bin/env bash

first_status=0
if [ "$first_status" -ne 0 ]; then
    attempts=2
    result="recovered"
else
    attempts=1
    result="clean"
fi
echo "attempts=$attempts result=$result"
  1. first_status ← 1

    3first_status=14if [ "$first_status" -ne 0 ]; then
    values this step1first_status
  2. if [ "$first_status" -ne 0 ]; then

    3first_status=14if [ "$first_status" -ne 0 ]; then5    attempts=2
    values this step1first_status
  3. attempts ← 2

    4if [ "$first_status" -ne 0 ]; then5    attempts=26    result="recovered"
    values this step2attempts
  4. result ← recovered

    5    attempts=26    result="recovered"7else
    values this steprecoveredresult
  5. echo "attempts=$attempts result=$result"

    10fi11echo "attempts=$attempts result=$result"
    outputattempts=2 result=recovered
    values this step2attemptsrecoveredresult
  1. first_status ← 0

    3first_status=04if [ "$first_status" -ne 0 ]; then
    values this step0first_status
  2. if [ "$first_status" -ne 0 ]; then

    3first_status=04if [ "$first_status" -ne 0 ]; then5    attempts=2
    values this step0first_status
  3. attempts ← 1

    7else8    attempts=19    result="clean"
    values this step1attempts
  4. result ← clean

    8    attempts=19    result="clean"10fi
    values this stepcleanresult
  5. echo "attempts=$attempts result=$result"

    10fi11echo "attempts=$attempts result=$result"
    outputattempts=1 result=clean
    values this step1attemptscleanresult
retry A retry repeats work after a failed first attempt.
attempt count Recording attempts makes recovery behavior visible.
recovered A recovered result means the retry path made the workflow usable again.