在 bash 脚本中将变量传递给 aws cli 命令

Passing variables to aws cli command in bash script

我是编写 bash 脚本的新手,在将变量传递给 AWS CLI 命令时遇到了问题。我确信有一个简单的解决方法,我只是无法理解这种语法。以下是我目前的脚本:

#!/bin/bash

CONFIG_RECORDER=`aws configservice describe-configuration-recorders
export CONFIG_RECORDER_NAME=$(jq -r '.ConfigurationRecorders[].name' <<<"$CONFIG_RECORDER")

sudo yum -y install jq

aws configservice delete-configuration-recorder --configuration-recorder-name $CONFIG_RECORDER_NAME

此脚本的目的是使用 aws cli 命令删除配置记录器。我收到一个错误 aws: error: argument --configuration-recorder-name: expected one argument

我有一个变量,$CONFIG_RECORDER_NAME,被指定为参数,但由于某种原因它没有读取。有关如何将此变量传递给此命令的任何建议都会有所帮助。

如果 aws configservice describe-configuration-recorders 调用 returns 单个配置记录器名称,则以下内容似乎可以正常工作:

#!/bin/bash

sudo yum -y install jq

CONFIG_RECORDER=`aws configservice describe-configuration-recorders`
# echo "CONFIG_RECORDER="$CONFIG_RECORDER

CONFIG_RECORDER_NAME=$(jq -r '.ConfigurationRecorders[].name' <<<"$CONFIG_RECORDER")
# echo "CONFIG_RECORDER_NAME="$CONFIG_RECORDER_NAME

aws configservice \
    delete-configuration-recorder \
    --configuration-recorder-name $CONFIG_RECORDER_NAME

其实没必要用jq。您可以简单地使用:

#!/bin/bash

CONFIG_RECORDER_NAME=`aws configservice describe-configuration-recorders --query 'ConfigurationRecorders[0].name' --output text`

aws configservice \
    delete-configuration-recorder \
    --configuration-recorder-name $CONFIG_RECORDER_NAME