curl和bash脚本,使用承载令牌执行post请求
请教育我 我的剧本是:curl和bash脚本,使用承载令牌执行post请求,bash,curl,Bash,Curl,请教育我 我的剧本是: #!/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-90d
#!/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”:“unauthorized”,“error_description”:“在SecurityContext”}curl:(6)无法解析主机:承载curl:(6)无法解析主机:00000000-4cd9-4bc6-90da-5d43a155f30e“
curl:(6)无法解析主机:无缓存“
curl:(6)无法解析主机:应用程序
curl:(6)无法解析主机:351e4bf1-04a2-4c99-8a21-21a05f51244a“
卷曲:(3)[globbing]第18列中不匹配的右括号/括号
现在令人恼火的是,如果我运行程序回显的行(这行:
echo$curl\u string\u complete
)对于curl,curl很高兴,并且运行代码行没有问题。如果您对shell扩展过程有问题,请参阅bash手册和posix shell手册了解更多详细信息。语法引号在变量扩展之前处理,因此变量内的引号是文字。对于echo,变量被拆分,但因为echo通过s连接这样的速度是看不见的
通过printf“\n”$curl\u string\u complete
更改echo$curl\u string\u 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[@]}"
您对shell扩展过程有疑问,请参阅bash手册和posix shell手册以了解更多详细信息。语法引号在变量扩展之前进行处理,因此变量内部的引号是文字。在echo的情况下,变量被拆分,但由于echo按空格连接,因此无法看到 通过
printf“\n”$curl\u string\u complete
更改echo$curl\u string\u 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[@]}"
感谢您的帮助!看来
printf“\n”
将对我的bash编程未来起到至关重要的帮助。感谢您提供如此完整的答案,这一切都有助于我的脚本正常工作。感谢您的帮助!它将出现printf”\n“
将对我未来的bash编程起到至关重要的帮助。谢谢你提供这样一个完整的答案,这一切都有助于我的脚本工作。