Created SC3025 (markdown)

Vidar Holen
2020-09-07 20:24:59 -07:00
parent 5d9294fb04
commit b8839ea6d3

31
SC3025.md Normal file

@@ -0,0 +1,31 @@
## In POSIX sh, /dev/{tcp,udp} is undefined.
(or "In dash, ... is not supported." when using `dash`)
### Problematic code:
```sh
echo foo > /dev/tcp/myhost/1234
```
### Correct code:
Rewrite using a tool like netcat (`nc`):
```sh
echo foo | nc myhost 1234
```
### Rationale:
`/dev/tcp/$host/$port` and `/dev/udp/$host/$port` are recognized in redirections by bash and ksh, and a socket connection is made instead of opening a file. They do not physically exist in `/dev`.
POSIX sh and dash do not support this, so any such code should be rewritten to use a socket tool explicitly. The obvious candidate is netcat aka `nc`.
### Exceptions:
None
### Related resources:
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!