Я могу ответить только за исполнительную часть:
exec без данной команды может использоваться для изменения перенаправлений ввода / вывода. <> в данном случае означает открытый для чтения + записи. 5 - номер канала (или дескриптор файла). Это имеет смысл, если другие команды отправляют свои выходные данные / читают свои входные данные с канала 5.
Для "/ dev / tcp / $ {SERVER} / $ {PORT}" я не знаю, является ли это функцией определенной версии Linux или функцией bash (я полагаю, последняя).
- РЕДАКТИРОВАТЬ: со страницы руководства bash: -
Bash handles several filenames specially when they are used
in redirections, as described in the following table:
/dev/fd/fd
If fd is a valid integer, file descriptor fd is
duplicated.
/dev/stdin
File descriptor 0 is duplicated.
/dev/stdout
File descriptor 1 is duplicated.
/dev/stderr
File descriptor 2 is duplicated.
/dev/tcp/host/port
If host is a valid hostname or Internet address,
and port is an integer port number or service
name, bash attempts to open a TCP connection to
the corresponding socket.
/dev/udp/host/port
If host is a valid hostname or Internet address,
and port is an integer port number or service
name, bash attempts to open a UDP connection to
the corresponding socket.