我正在尝试编写一个shell脚本,使用curl调用两个API。
第一个卷曲的JSON输出的一个键传递给第二个卷曲。在下面的Bash脚本中,我将令牌作为命令行参数传递给第一个curl,它工作正常。
第一个卷曲的输出被提取到client_token
,我将它传递到第二个卷曲。它失败了。
原因是,无论我在哪里有$client_token
,该值都被替换为"value"
(带引号)而不是value
(没有引号)。 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"
可能你的jq
命令正在输出你不想要的引号。请问jq
的原始值:
client_token=`echo $XVaultToken|jq -r '.auth.client_token'