Scripts often start with defaults, then let configuration data override only the values that should change.

Program

Play the script to set a selectable default timeout and build the effective value.

config_defaults.sh
#!/usr/bin/env bash

timeout=
config_timeout=""
effective_timeout=${config_timeout:-$timeout}
echo "timeout=$effective_timeout"
#!/usr/bin/env bash

timeout=
config_timeout=""
effective_timeout=${config_timeout:-$timeout}
echo "timeout=$effective_timeout"
#!/usr/bin/env bash

timeout=
config_timeout=""
effective_timeout=${config_timeout:-$timeout}
echo "timeout=$effective_timeout"
default A script default gives the program a value even when config is absent.
:- `${name:-fallback}` expands to the fallback when `name` is empty or unset.
effective value The effective value is the one later commands should use.