Eu sei que posso redirecionar o stdout para uma variável de ambiente, por exemplo
retcode=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges')
mas como redirecionar a saída stderr para uma variável de ambiente também (neste exemplo, para detectar um usuário cancelando a caixa de diálogo de credenciais de administrador)?
Responder1
Esta é a maneira mais simples de redirecionar stdout e stderr para uma variável:
output=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges' 2>&1)
retcode=$?
Está ficando mais complicado se você quiser capturar stdout e stderr separadamente. Acho que a única maneira direta é redirecionar stdout/stderr para arquivos separados:
/usr/bin/osascript -e 'do shell script ... with administrator privileges' >/tmp/$$.stdout 2>/tmp/$$.stderr
retcode=$?
output=$(cat /tmp/$$.stdout)
stderr=$(cat /tmp/$$.stderr)
Certifique-se de limpar os arquivos mais tarde.