Я знаю, что могу перенаправить stdout в переменную окружения, например
retcode=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges')
но как перенаправить вывод stderr в переменную окружения (в этом примере, чтобы обнаружить, что пользователь отменяет диалоговое окно с учетными данными администратора)?
решение1
Это самый простой способ перенаправить stdout и stderr в одну переменную:
output=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges' 2>&1)
retcode=$?
Становится сложнее, если вы хотите перехватывать stdout и stderr отдельно. Я думаю, что единственный прямой способ — перенаправить stdout/stderr в отдельные файлы:
/usr/bin/osascript -e 'do shell script ... with administrator privileges' >/tmp/$$.stdout 2>/tmp/$$.stderr
retcode=$?
output=$(cat /tmp/$$.stdout)
stderr=$(cat /tmp/$$.stderr)
Обязательно удалите файлы позже.