Interactive scripts often suggest a default when the user presses enter. Modeling the response as a variable keeps the replay deterministic while showing the defaulting pattern.

Program

Play the script to choose an entered project name and see how the fallback is applied.

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

prompt="Project name"
answer=""
project="${answer:-demo}"
echo "$prompt: $project"
#!/usr/bin/env bash

prompt="Project name"
answer="api"
project="${answer:-demo}"
echo "$prompt: $project"
  1. prompt ← Project name

    3prompt="Project name"4answer=""
    values this stepProject nameprompt
  2. answer ← (empty)

    3prompt="Project name"4answer=""5project="${answer:-demo}"
    values this step(empty)answer
  3. project ← demo

    4answer=""5project="${answer:-demo}"6echo "$prompt: $project"
    values this stepdemoproject(empty)answer
  4. echo "$prompt: $project"

    5project="${answer:-demo}"6echo "$prompt: $project"
    outputProject name: demo
    values this stepProject namepromptdemoproject
  1. prompt ← Project name

    3prompt="Project name"4answer="api"
    values this stepProject nameprompt
  2. answer ← api

    3prompt="Project name"4answer="api"5project="${answer:-demo}"
    values this stepapianswer
  3. project ← api

    4answer="api"5project="${answer:-demo}"6echo "$prompt: $project"
    values this stepapiprojectapianswer
  4. echo "$prompt: $project"

    5project="${answer:-demo}"6echo "$prompt: $project"
    outputProject name: api
    values this stepProject namepromptapiproject
prompt A prompt is the text shown before asking for input.
empty answer An empty answer can mean the user accepted the default.
default expansion `${answer:-demo}` uses `demo` when `answer` is empty.