用于将AWS命令输出设置为变量的Bash命令

时间:2020-04-15 21:45:24

标签: bash shell

我想在shell脚本中为以下aws命令分配一个变量。 如果命令成功执行,我想将输出分配给S3_BUCKET_REGION。例如: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"' )

但是,如果存储桶不存在,则上述命令的错误是“调用GetBucketLocation操作时发生错误(NoSuchBucket):指定的存储桶不存在”

我想捕获此错误并在脚本中回显它。

因此,如果命令成功运行,我想分配一个变量。否则,我想回显错误。如何为此执行条件语句?

1 个答案:

答案 0 :(得分:1)

通常,命令将输出发送到STDOUT,将错误发送到STDERR。 $()仅捕获STDOUT,因此您应该通过将STDERR重定向到STDOUT来完成命令

MYVAR=$( blablabla 2>&1 )
相关问题