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_WRONLYe O_RDWRpara testar se o FD é gravável O_RDONLYe O_RDWRpara 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? ?