curl 和 bash 脚本,使用持有者令牌执行 POST 请求



请教育我!

我的脚本是:

#!/usr/bin/env bash
username="zDISABLEDc"
rand="Z01c20a936f474b"
single_quote="'"
curl_string_part1_="-X PUT https://api.secretkgbwebsite.com/api/v4.1/user/$username "
curl_string_part2_='-H "Authorization: bearer 00000000-4cd9-4bc6-90da-5d43a155f30e" -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "Postman-Token: 351e4bf1-04a2-4c99-8a21-21a05f51244a" -d '
curl_string_part3_='{"password": "'
curl_string_part4_='"}'
curl_string_complete="$curl_string_part1_$curl_string_part2_$single_quote$curl_string_part3_$rand$curl_string_part4_$single_quote"
echo $curl_string_complete
echo " "
success=0
curl $curl_string_complete && success=1
if ((success)); then
echo "SUCCESS. password has been reset to : "
echo $rand
else
echo "problem sending and resetting password."
fi

我得到的错误是:

{"error":"未经授权","error_description":"在安全上下文中找不到身份验证对象"}curl:(6( 无法解析主机:持有者卷曲:(6( 无法解析主机:00000000-4cd9-4bc6-90da-5d43a155f30e
"curl:(6( 无法解析主机:无缓存">
卷曲:(6( 无法解析主机:应用程序卷曲:(6( 无法解析主机:351e4bf1-04a2-4c99-8a21-21a05f51244a">

卷曲:
(3( [通配] 第 18 列中不匹配的右大括号/括号

现在烦人的是,如果我用 curl 运行我的程序回显出的行(此行:echo $curl_string_complete(,curl 很高兴并且运行该行没有问题。

您在 shell扩展过程中遇到问题,请参阅 Bash 手册和 POSIX shell 手册以获取更多详细信息。 语法引号在变量展开之前处理,因此变量内的引号是文字的。在回声的情况下,变量是分开的,但由于回声通过空间连接,所以看不到。

printf "<%s>n" $curl_string_complete更改echo $curl_string_complete以查看参数的拆分方式。

为了解决这个问题,你可以使用数组,比如:

curl_string_part1_=( -X PUT https://api.secretkgbwebsite.com/api/v4.1/user/$username )
curl_string_part2_=(-H "Authorization: bearer 00000000-4cd9-4bc6-90da-5d43a155f30e" -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "Postman-Token: 351e4bf1-04a2-4c99-8a21-21a05f51244a" -d )
curl_string_part3_='{"password": "'
curl_string_part4_='"}'
curl_string_complete=( "${curl_string_part1_[@]}" "${curl_string_part2_[@]}" "$curl_string_part3_$rand$curl_string_part4_" )
curl "${curl_string_complete[@]}"

相关内容

最新更新