![Curl 未接收 bash 变量并退出并出现 jq 错误](https://linux22.com/image/15187/Curl%20%E6%9C%AA%E6%8E%A5%E6%94%B6%20bash%20%E5%8F%98%E9%87%8F%E5%B9%B6%E9%80%80%E5%87%BA%E5%B9%B6%E5%87%BA%E7%8E%B0%20jq%20%E9%94%99%E8%AF%AF.png)
我想将 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 密钥