SC3022 – ShellCheck Wiki

See this page on GitHub


In POSIX sh, named file descriptors is undefined.

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

Problematic code:

exec {n}> "$output"
echo "Your fd is $n"

Correct code:

There is no simple, mechanical alternative for POSIX sh, but you can either switch to a shell that does support this (like bash), or hard code (or eval) a specific file descriptor.


The syntax for opening an arbitrary file descriptor and assigning it to a variable for later use is a bash and ksh extension. It does not work on POSIX sh or dash.



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