簡體   English   中英

aws-cli 不適用於我在 bash 中創建的變量

[英]aws-cli won't work with a variable I created in bash

我正在嘗試編寫一個 bash 腳本來創建 AWS SQS 隊列,然后檢查隊列是否為空。 為此,我創建了以下應返回“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 它工作正常並返回'null',因為它應該。

為什么它不接受 $queue_url 而是接受相同的 URL 地址,如果我明確寫了它?

編輯:似乎 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 而不是 list_queues 並讓我們知道它是如何進行的。

我解決了它,我只需要從輸出中刪除引號,我是這樣做的:

queue_url=$(aws sqs list-queues --query QueueUrls[0])
queue_url="${queue_url%\"}"
queue_url="${queue_url#\"}"

另一個stackoverflow問題有幫助: Shell script - remove first and last quote (") from a variable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM