mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2115 (markdown)
21
SC2115.md
Normal file
21
SC2115.md
Normal file
@@ -0,0 +1,21 @@
|
||||
## 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](https://github.com/ValveSoftware/steam-for-linux/issues/3671) 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.
|
||||
|
||||
### Exceptions:
|
||||
|
||||
None.
|
Reference in New Issue
Block a user