【问题标题】:Passing string to curl without literal double quotes在没有文字双引号的情况下将字符串传递给 curl
【发布时间】:2019-02-25 07:52:55
【问题描述】:

我正在尝试编写一个使用 curl 调用两个 API 的 shell 脚本。

第一个 curl 的 JSON 输出的一个键被传递给第二个 curl。在下面的 Bash 脚本中,我将令牌作为命令行参数传递给第一个 curl,它工作正常。

第一个 curl 的输出被提取到 client_token 中,我将它传递给第二个 curl。它失败了。

原因是,无论我有$client_token,该值都被替换为"value"(带引号)而不是value(不带引号)。 Curl 期望在第二个 curl 中没有引号的字符串。如何去掉双引号?

echo $1
XVaultToken=`curl -X POST  "https://sub.domain.tld:8200/login"   -d '{"token":"'"$1"'"}'` 
client_token=`echo $XVaultToken|jq '.auth.client_token' 
echo $client_token
apiKey=`curl -X GET https://sub.domain.tld:8200/api-key  -H 'X-Vault-Token: "'"$client_token"'"'`
#apiKey=`curl -X GET https://sub.domain.tld:8200/api-key  -H 'X-Vault-Token: $client_token'`
echo "apikey"

【问题讨论】:

    标签: bash curl double-quotes


    【解决方案1】:

    可能您的jq 命令正在输出您不想要的引号。向 jq 询问原始值:

    client_token=`echo $XVaultToken|jq -r '.auth.client_token'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 2013-01-18
      • 2012-11-21
      • 2016-12-09
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多