Hi, As tested interactively with bash 5.0.7(1) and GNU/Linux, the following command prints a constant number of active file descriptors, as expected:
$ while :; do { read; } < <(:); sleep 0.5; printf %s\\n /proc/self/fd/* | wc -l; done 6 6 6 6 6 ... etc However, merely by assigning a variable prior to the loop, though within the same line, the number will continuously grow: $ var=0; while :; do { read; } < <(:); sleep 0.5; printf %s\\n /proc/self/fd/* | wc -l; done 6 7 8 9 10 ... etc If then adjusted so that the read command is not part of a compound command, normality is restored: $ var=0; while :; do read < <(:); sleep 0.5; printf %s\\n /proc/self/fd/* | wc -l; done 5 5 5 5 5 ... etc I noticed this behaviour upon running out of file descriptors after executing structurally similar code that deliberately utilises a compound command to read twice, thus discarding the first line of input. -- Kerin Millar <k...@plushkava.net>