Created SC1138 (markdown)

Vidar Holen
2022-10-19 21:08:36 -07:00
parent 9831743319
commit c8233ab444

35
SC1138.md Normal file

@@ -0,0 +1,35 @@
## Shells are space sensitive. Use '< <(cmd)', not '<< (cmd)'.
### Problematic code:
```sh
while read -r line
do
echo "You said: $line"
done <<(cmd)
```
### Correct code:
```sh
while read -r line
do
echo "You said: $line"
done < <(cmd)
```
### Rationale:
When redirecting `<` from a process substitution `<(cmd)`, make sure there is a space between the two `<` characters as shown in the example.
With a space `cmd1 < <(cmd2)`, is correctly interpreted as "run cmd1, reading stdin from cmd2, without forking for a pipeline".
Without a space, `<<` is incorrectly considered a here document, and `(cmd2)` is an invalid delimiter token.
### Exceptions:
None
### Related resources:
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!