SC3025 – ShellCheck Wiki

See this page on GitHub

Sitemap


In POSIX sh, /dev/{tcp,udp} is undefined.

(or "In dash, ... is not supported." when using dash)

Problematic code:

echo foo > /dev/tcp/myhost/1234

Correct code:

Rewrite using a tool like netcat (nc):

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


ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.