Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
curl和bash脚本,使用承载令牌执行post请求_Bash_Curl - Fatal编程技术网

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编程起到至关重要的帮助。谢谢你提供这样一个完整的答案,这一切都有助于我的脚本工作。