03. Substitution Operators :-, :=, :?, :+

It's extremely important that the variables in your shell scripts are set - otherwise the results can be disastrous!

Take, for example:

$ rm -r /Users/johnPC/$UNSET_VARIABLE
# Same as rm -r /Users/JohnPC/ if variable unset!

We wouldn't want to destroy our entire home folder, would we?

Luckily there are several ways around this, with the use of substitution operators.

The following four operators are used to substitute for a variable if its value is null. Assume we have an unset variable named $TEST.

1) Simply return -

With the dash (-), we can simply return the value if our variable is not set.

echo "${TEST:-hello world}"
echo "$TEST"
$ ./test
hello world

2) Set and return =

With the =, we may set the value, and also return it.

echo "${TEST:=hello world}"
echo "$TEST"
$ ./test
hello world
hello world

3) Abort if unset ?

To abort the entire program if the variable is unset, use the question mark (?).

echo "${TEST:?hello world}"
echo "$TEST"
$ ./test
./test: line 2: TEST: hello world

4) Inverse +

We may also return a different value if the variable is set with the plus symbol (+).

echo "${TEST:+hello world}"
echo "$TEST"
$ ./test

Since our $TEST variable is unset, we return nothing.

Aching back from coding all day?

Acupressure Mat & Pillow

Aching back from coding all day? Try Back Problems

Relieve your stress, back, neck and sciatic pain through 1,782 acupuncture points for immediate neck pain relief. Made for lower, upper and mid chronic back pain treatment, and improves circulation, sleep, digestion and quality of life.

$$ Check price
144.87144.87Amazon 4.5 logo(1,890+ reviews)

More Back Problems resources

Take your Linux skills to the next level!

System Admin Handbook

Take your Linux skills to the next level! Try Linux & UNIX

This book approaches system administration in a practical way and is an invaluable reference for both new administrators and experienced professionals. It details best practices for every facet of system administration, including storage management, network design and administration, email, web hosting, scripting, and much more.

$ Check price
74.9974.99Amazon 4.5 logo(142+ reviews)

More Linux & UNIX resources