Interactive Prompts
Prompt Default
Use a Fallback
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.
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"
prompt ← Project name
3prompt="Project name"4answer=""values this stepProject namepromptanswer ← (empty)
3prompt="Project name"4answer=""5project="${answer:-demo}"values this step(empty)answerproject ← demo
4answer=""5project="${answer:-demo}"6echo "$prompt: $project"values this stepdemoproject(empty)answerecho "$prompt: $project"
5project="${answer:-demo}"6echo "$prompt: $project"outputProject name: demovalues this stepProject namepromptdemoproject
prompt ← Project name
3prompt="Project name"4answer="api"values this stepProject namepromptanswer ← api
3prompt="Project name"4answer="api"5project="${answer:-demo}"values this stepapianswerproject ← api
4answer="api"5project="${answer:-demo}"6echo "$prompt: $project"values this stepapiprojectapianswerecho "$prompt: $project"
5project="${answer:-demo}"6echo "$prompt: $project"outputProject name: apivalues 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.