aws-cli 不适用于我在 bash 中创建的变量
aws-cli won't work with a variable I created in bash
我正在尝试编写 bash 脚本来创建 AWS SQS 队列,然后检查队列是否为空。为此,我创建了以下脚本,该脚本应该 return "null":
aws sqs create-queue --queue-name MessagesQueue
queue_url=$(aws sqs list-queues --query QueueUrls[0])
queue_check=$(aws sqs get_queue_attributes --queue_url $queue_url --attribute-names ApproximateNumberOfMessages --query Attributes[0].ApproximateNumberOfMessages
而我却收到此错误消息:
An error occurred (InvalidAddress) when calling the GetQueueAttributes operation: The address "https://eu-west-3.queue.amazonaws.com/XXXXXXXXXXXX/MessagesQueue" is not valid for this endpoint.
但是如果我在命令中明确写入相同的地址而不是使用 $queue_url 它工作正常并且 returns 'null' 它应该。
为什么它不接受 $queue_url 但接受相同的 URL 地址(如果我明确写入)?
Edit:似乎 aws-cli 命令将变量 $queue_url
读取为单引号和双引号之间的 URL,当我明确地写它它读取 URL 没有引号所以这就是它接受它的原因。我如何使用我创建的 bash 变量,以便 aws-cli 读取它时不带引号?
一旦我尝试 运行 你的代码,一部分一部分(从 aws sqs 开始 list_queues
), 我注意到:
aws: error: argument operation: Invalid choice, valid choices are:
...
Invalid choice: 'list_queues', maybe you meant:
* list-queues
尝试使用列表队列 list_queues 并让我们知道它的进展情况。
我解决了,我只需要从输出中删除引号,我是这样做的:
queue_url=$(aws sqs list-queues --query QueueUrls[0])
queue_url="${queue_url%\"}"
queue_url="${queue_url#\"}"
另一个 Whosebug 问题有帮助:Shell script - remove first and last quote (") from a variable
我正在尝试编写 bash 脚本来创建 AWS SQS 队列,然后检查队列是否为空。为此,我创建了以下脚本,该脚本应该 return "null":
aws sqs create-queue --queue-name MessagesQueue
queue_url=$(aws sqs list-queues --query QueueUrls[0])
queue_check=$(aws sqs get_queue_attributes --queue_url $queue_url --attribute-names ApproximateNumberOfMessages --query Attributes[0].ApproximateNumberOfMessages
而我却收到此错误消息:
An error occurred (InvalidAddress) when calling the GetQueueAttributes operation: The address "https://eu-west-3.queue.amazonaws.com/XXXXXXXXXXXX/MessagesQueue" is not valid for this endpoint.
但是如果我在命令中明确写入相同的地址而不是使用 $queue_url 它工作正常并且 returns 'null' 它应该。
为什么它不接受 $queue_url 但接受相同的 URL 地址(如果我明确写入)?
Edit:似乎 aws-cli 命令将变量 $queue_url
读取为单引号和双引号之间的 URL,当我明确地写它它读取 URL 没有引号所以这就是它接受它的原因。我如何使用我创建的 bash 变量,以便 aws-cli 读取它时不带引号?
一旦我尝试 运行 你的代码,一部分一部分(从 aws sqs 开始 list_queues ), 我注意到:
aws: error: argument operation: Invalid choice, valid choices are:
...
Invalid choice: 'list_queues', maybe you meant:
* list-queues
尝试使用列表队列 list_queues 并让我们知道它的进展情况。
我解决了,我只需要从输出中删除引号,我是这样做的:
queue_url=$(aws sqs list-queues --query QueueUrls[0])
queue_url="${queue_url%\"}"
queue_url="${queue_url#\"}"
另一个 Whosebug 问题有帮助:Shell script - remove first and last quote (") from a variable