Bash: Assign default value for a positional parameter

July 22, 2022  ‐ 1 min read

In a bash script that uses parameters we can set a default value for our arguments. We can do so by making use of a special way of parameter expansion: ${parameter:-default}.

If the parameter is not set or null bash expands the parameter as default. Otherwise the value of the parameter is maintained.

For example, let's assume we have the following script.

var="${1:-Hello}"
echo "$var, user"

If we call our script without positional parameters, the value $1 is not set and therefore we set the variable var to the default of "Hello".

$ ./script
Hello, user

If we instead call our script with "Goodbye" as the first positional argument, var is expanded to this value.

$ ./script Goodbye
Goodbye, user