mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2188 (markdown)
33
SC2188.md
Normal file
33
SC2188.md
Normal file
@@ -0,0 +1,33 @@
|
||||
## This redirection doesn't have a command. Move to its command (or use 'true' as no-op).
|
||||
|
||||
### Problematic code:
|
||||
|
||||
```sh
|
||||
{
|
||||
echo "Report for $(date +%F)"
|
||||
uptime
|
||||
df -h
|
||||
}
|
||||
> report.txt
|
||||
```
|
||||
|
||||
### Correct code:
|
||||
|
||||
```sh
|
||||
{
|
||||
echo "Report for $(date +%F)"
|
||||
uptime
|
||||
df -h
|
||||
} > report.txt
|
||||
```
|
||||
### Rationale:
|
||||
|
||||
ShellCheck found a redirection that doesn't actually redirect from/to anything.
|
||||
|
||||
This could indicate a bug, such as in the problematic code where an additional linefeed causes `report.txt` to be truncated instead of containing report output, or in `foo & > bar`, where either `foo &> bar` or `foo > bar &` was intended.
|
||||
|
||||
However, it could also be intentionally used to truncate a file or check that it's readable. You can make this more explicit for both ShellCheck and human readers by using `true` or `:` as a dummy command, e.g. `true > file` or `: > file`.
|
||||
|
||||
### Exceptions:
|
||||
|
||||
There are no semantic problems with using `> foo` over `true > foo`, so if you don't see this as a potential source of bugs or confusion, you can [[ignore]] it.
|
Reference in New Issue
Block a user