SC2115
Evan McCarter edited this page May 15, 2022
·
5 revisions
Use "${var:?}" to ensure this never expands to /* .
Problematic code:
rm -rf "$STEAMROOT/"*Correct code:
rm -rf "${STEAMROOT:?}/"*Rationale:
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.
Exceptions:
None.