OS X: перенаправить вывод ошибок команды в переменную окружения

OS X: перенаправить вывод ошибок команды в переменную окружения

Я знаю, что могу перенаправить 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)

Обязательно удалите файлы позже.

Связанный контент