Curl 未接收 bash 变量并退出并出现 jq 错误

Curl 未接收 bash 变量并退出并出现 jq 错误

我想将 bash 变量传递给 bash 脚本中的curl 请求:

#!/bin/sh
#request sshkey from do rebrain account
do_token=`echo "var.do-token" | terraform -chdir=/input console -var-file terraform.auto.tfvars`
echo $do_token
curl -X GET -s -H "Authorization: Bearer $do_token" -d '{ "job_run": {} }' "https://api.digitalocean.com/v2/account/keys?page=1" | jq -r --arg queryname "User's key" '.ssh_keys[] | select(.name == $queryname).public_key'

echo $do_token 在引号中返回适当的标记,如下所示: "token"。但它会抛出一个错误"jq: error (at <stdin>:0): Cannot iterate over null (null)"

然后我将其传递到 main.tf 中:

data "external" "fetchssh" {
  program = ["bash", "${path.module}/get_sshkey.sh"]
  query = {
    do_token = var.do-token
  }
}

在 terraform 中使用 data.external.fetchssh 变量

我应该如何实施以避免错误?

答案1

这有效“${do_token//”}”,因此将其传递到curl -X GET -s -H "Authorization: Bearer ${do_token//\"}" "https://api.digitalocean.com/v2/account/keys?page=1" | jq -r --arg queryname "User's key" '.ssh_keys[] | select(.name == $queryname).public_key'将返回 ssh 密钥

相关内容