Skip to content

Latest commit

 

History

History
29 lines (17 loc) · 949 Bytes

SC2115.md

File metadata and controls

29 lines (17 loc) · 949 Bytes

Pattern: Possibly dangerous use of "$empty/"

Issue: -

Description

This rule is indented to detect some catastrophic rm -r "$empty/" mistakes.

Example of incorrect code:

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.

Example of correct code:

rm -rf "${STEAMROOT:?}/"*

Further Reading