Eu gostaria que um script bash produzisse informações adicionais para os descritores de arquivo (FDs) maiores ou iguais a 3, quando abertos. Para testar se um FD está aberto, criei o seguinte truque:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
Isso é suficiente para minhas necessidades, mas estou curioso para saber se existe uma maneira mais idiomática de testar se um FD é válido. Estou especialmente interessado em saber se existe um mapeamento do fcntl(1)
syscall para um comando shell, o que permitiria a recuperação de sinalizadores de FD ( O_WRONLY
e O_RDWR
para testar se o FD é gravável O_RDONLY
e O_RDWR
para testar se o FD é legível).
<>
? O shell não vai ler de seu stderr, por que você deseja abri-lo em leitura + gravação? O que você quer dizer com o que aconteceu com o intrínseco? ?