Getting Default Values
Problem
You have a shell script that takes arguments supplied on the command line. You’d like to provide default values so that the most common value(s) can be used without needing to type them every time.
Solution
Use the ${:-} syntax when referring to the parameter, and use it to supply a default value:
FILEDIR=${1:-/tmp}Discussion
There are a series of special operators available when referencing
a shell variable. This one, the : -operator, says that if $1 is not set or is null then it will use what
follows, /tmp in our example, as the
value. Otherwise it will use the value that is already set in $1. It can be used on any shell variable, not
just the positional parameters (1, 2, 3, etc.), but they are probably
the most common use.
Of course you could do this the long way by constructing
an if statement and
checking to see if the variable is null or unset (we leave that as an
exercise to the reader), but this sort of thing is so common in shell
scripts that this syntax has been welcomed as a convenient
shorthand.
See Also
bash manpage on parameter substitution
Learning the bash Shell by Cameron Newham (O’Reilly), See Also-Discussion
Classic Shell Scripting by Nelson H.F. Beebe and Arnold Robbins (O’Reilly), pages 113–114
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access