"${var:?}"
to ensure this never expands to /*
.rm -rf "$STEAMROOT/"*
rm -rf "${STEAMROOT:?}/"*
If STEAMROOT
is empty, this will end
up deleting everything in the system's root directory.
Using :?
will cause the command to fail if the variable
is null or unset. Similarly, you can use :-
to set a
default value if applicable.
In the case command substitution, assign to a variable first and then
use :?
. This is relevant even if the command seems simple
and obviously correct, since forks and execs can fail due to external
system limits and conditions, resulting in a blank substitution.
For more details about :?
see the "Parameter Expansion"
section of the Bash man page.
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.