Created SC1142 (markdown)

Vidar Holen
2020-12-06 21:02:39 -08:00
parent a90e4e8b85
commit 8e711c85ae

36
SC1142.md Normal file

@@ -0,0 +1,36 @@
## Use 'done < <(cmd)' to redirect from process substitution (currently missing one '<').
### Problematic code:
```sh
sum=0
while IFS="" read -r n
do
(( sum += n ))
done <(file)
```
### Correct code:
```sh
sum=0
while IFS="" read -r n
do
(( sum += n ))
done < <(file)
```
### Rationale:
ShellCheck found a `done` keyword followed by a process substitution, e.g. `done <(cmd)`.
The intention was most likely to redirect from this process substitution, in which case you will need one extra `<`: `done < <(cmd)`.
This is because `<(cmd)` expands to a filename (e.g. `/dev/fd/63`), and you need a `<` to redirect from filenames.
### Exceptions:
None
### Related resources:
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!