Eu vi isso em um script bash e tentei entender:
exec {STDIN}>&0
exec {STDOUT}>&1
exec {STDERR}>&2
As "strings mágicas" {STDIN}
, etc são reconhecidas por diretiva em scripts bash?{STDOUT}
exec
STDOUT já não está definido como &1
(e STDERR definido como &2
, ...) de qualquer maneira?
O que essas linhas fazem?
De
man bash
:Então as linhas no seu exemplo:
têm o efeito de atribuir três novos descritores de arquivo que são duplicatas dos descritores atuais 0, 1 e 2, e atribuir os valores desses novos descritores às variáveis do shell e
$STDIN
, respectivamente. Depois que esses comandos forem executados, você poderá ver os valores dos descritores duplicados:$STDOUT
$STDERR
A razão mais provável para fazer isso é salvar a disposição atual de stdin, stdout e stderr para que o script possa redirecionar livremente os descritores 0, 1 e 2 para vários locais conforme necessário por algumas partes do script e, em seguida, restaurá-los para seus alvos originais fazendo algo como: