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

0

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 do stderr para uma variável de ambiente também (neste exemplo para detectar um usuário cancelando a caixa de diálogo de credenciais do admin)?

    
por Thomas S. 28.10.2014 / 12:34

1 resposta

1

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 pegar stdout e stderr separadamente. Eu acho que a única maneira direta é redirecionar o 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.

    
por 28.10.2014 / 14:13