我正在尝试编写一个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"
答案 0 :(得分:0)
您的jq
命令可能正在输出不需要的引号。向jq
询问原始值:
client_token=`echo $XVaultToken|jq -r '.auth.client_token'