将字符串传递给curl而没有文字双引号

时间:2019-02-24 23:29:36

标签: bash curl double-quotes

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

第一个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"

1 个答案:

答案 0 :(得分:0)

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

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