OS X: Redirecionar saída de erro do comando para variável de ambiente

OS X: Redirecionar saída de erro do comando para variável de ambiente

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.

informação relacionada