Bash команда для установки aws вывода команды в переменную - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу назначить переменную в сценарии оболочки для следующей команды aws. Если команда выполнена успешно, я хочу присвоить вывод S3_BUCKET_REGION.Eg: S3_BUCKET_REGION = us-east-1.

S3_BUCKET_REGION=$( aws s3api get-bucket-location --bucket ${TF_STATE_S3_BUCKET} | jq -r '.LocationConstraint // "us-east-1"' )

Но если корзина не существует, ошибка для вышеуказанной команды: «Произошла ошибка (NoSuchBucket) при вызове операции GetBucketLocation: указанная корзина не существует»

Я хочу захватить эту ошибку и выведите ее в сценарий.

Так что, если команда выполняется успешно, я хочу присвоить переменную. Если нет, я хочу вывести ошибку. Как сделать условное выражение для этого?

1 Ответ

1 голос
/ 16 апреля 2020

Обычно команды отправляют вывод в STDOUT, а ошибки - в STDERR. $ () захватывает только STDOUT, поэтому вы должны завершить sh свою команду перенаправлением STDERR на STDOUT

MYVAR=$( blablabla 2>&1 )
...