Я знаю, что могу перенаправить стандартный вывод в переменную окружения, например

retcode=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges')

но как перенаправить вывод stderr в переменную окружения (в этом примере, чтобы обнаружить пользователя, отменяющего диалоговое окно учетных данных администратора)?

1 ответ1

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)

Убедитесь, что вы очистите файлы позже.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .