在没有文字双引号的情况下将字符串传递给 curl
Passing string to curl without literal double quotes
我正在尝试编写一个 shell 使用 curl 调用两个 API 的脚本。
第一个 curl 的 JSON 输出的其中一个键被传递给第二个 curl。在下面的 Bash 脚本中,我将令牌作为命令行参数传递给第一个 curl,它工作正常。
第一个 curl 的输出被提取到 client_token
中,我将它传递给第二个 curl。失败了。
原因是,无论我有 $client_token
,该值都被替换为 "value"
(带引号)而不是 value
(不带引号)。 Curl 期望在第二个 curl 中没有引号的字符串。我怎样才能去掉双引号?
echo
XVaultToken=`curl -X POST "https://sub.domain.tld:8200/login" -d '{"token":"'""'"}'`
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'
我正在尝试编写一个 shell 使用 curl 调用两个 API 的脚本。
第一个 curl 的 JSON 输出的其中一个键被传递给第二个 curl。在下面的 Bash 脚本中,我将令牌作为命令行参数传递给第一个 curl,它工作正常。
第一个 curl 的输出被提取到 client_token
中,我将它传递给第二个 curl。失败了。
原因是,无论我有 $client_token
,该值都被替换为 "value"
(带引号)而不是 value
(不带引号)。 Curl 期望在第二个 curl 中没有引号的字符串。我怎样才能去掉双引号?
echo
XVaultToken=`curl -X POST "https://sub.domain.tld:8200/login" -d '{"token":"'""'"}'`
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'