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.