I have a whole bunch of tests on variables in a bash (3.00) shell script where if the variable is not set, then it assigns a default, e.g.:
if [ -z "${VARIABLE}" ]; then
FOO='default'
else
FOO=${VARIABLE}
fi
I seem to recall there's some syntax to doing this in one line, something resembling a ternary operator, e.g.:
FOO=${ ${VARIABLE} : 'default' }
(though I know that won't work...)
Am I crazy, or does something like that exist?
Very close to what you posted, actually. You can use something called Bash parameter expansion to accomplish this.
To get the assigned value, or default
if it's missing:
FOO="${VARIABLE:-default}" # FOO will be assigned 'default' value if VARIABLE not set or null.
# The value of VARIABLE remains untouched.
To do the same, as well as assign default
to VARIABLE
:
FOO="${VARIABLE:=default}" # If VARIABLE not set or null, set its value to 'default'.
# Then that value will be assigned to FOO