Скажем, у меня есть простой сценарий bash, как показано ниже:
#!/usr/bin/env bash
exec 19>&1
export BASH_XTRACEFD=19
set -xe -o pipefail
echo "Test message"
#python /python_script.py --name ${NAME} --city ${CITY}
gcloud config set project ${PROJECT_NAME}
gcloud auth activate-service-account --key-file=${GOOGLE_APPLICATION_CREDENTIALS}
gcloud auth activate-service-account --key-file=${FAKE_APPLICATION_CREDENTIALS}
Моя цель - зарегистрировать первые два вызова gcloud в stdout. В официальных документах (https://cloud.google.com/sdk/gcloud/reference), похоже, нет способа сделать это. Я подозреваю, что весь вывод gcloud записывается в stderr. Результат третьего вызова gcloud (именно там происходит настоящая ошибка) должен быть перенаправлен на stderr.
Если я выполню
/script.sh 1>/stdout_text.txt 2>/stderr_text.txt
Я хочу видеть содержимое файла stdout_text.txt, например:
...
Updated property [core/project].
Activated service account credentials for: [[email protected]]
...
и в содержимом файла stderr_text.txt вот так:
...
ERROR: gcloud crashed (Error): Incorrect padding
If you would like to report this issue, please run the following command:
gcloud feedback
To check gcloud for common problems, please run the following command:
gcloud info --run-diagnostics
...
Текущая ситуация такова, что весь вывод, который производит gcloud, перенаправляется на stderr. Могу ли я изменить поведение gcloud, чтобы диагностические / не связанные с ошибками события передавались в stdout, а реальные ошибки - в stderr?
Спасибо, обновил описание (последний абзац).
Я воспроизвел это и не нашел способа решить эту проблему !!





И что вы сейчас видите?