Shell Script Interfaces
Argument Default
Name an Input
A script interface starts with the values callers can pass. Defaults keep the command predictable when an argument is omitted.
Program
Play the script to choose a modeled first argument and see the effective project name.
argument_default.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash
arg_project=""
project="${arg_project:-demo}"
echo "project=$project"
#!/usr/bin/env bash
arg_project="api"
project="${arg_project:-demo}"
echo "project=$project"
arg_project ← (empty)
3arg_project=""4project="${arg_project:-demo}"values this step(empty)arg_projectproject ← demo
3arg_project=""4project="${arg_project:-demo}"5echo "project=$project"values this stepdemoproject(empty)arg_projectecho "project=$project"
4project="${arg_project:-demo}"5echo "project=$project"outputproject=demovalues this stepdemoproject
arg_project ← api
3arg_project="api"4project="${arg_project:-demo}"values this stepapiarg_projectproject ← api
3arg_project="api"4project="${arg_project:-demo}"5echo "project=$project"values this stepapiprojectapiarg_projectecho "project=$project"
4project="${arg_project:-demo}"5echo "project=$project"outputproject=apivalues this stepapiproject
argument
A script argument is caller-provided input.
default
`${name:-fallback}` supplies a fallback when the input is empty.
interface value
Copying the effective value into a named variable makes later code easier to read.