简体   繁体   English

Bash Shell Curl JSON 变量传递

[英]Bash Shell Curl JSON variable pass

I was trying to do CURL call from shell script and command line argument.我试图从 shell 脚本和命令行参数进行 CURL 调用。

url=$1
pg=$2
coockie=$3

curl '$url' -H 'sec-fetch-mode: cors' -H 'origin: $url' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36' -H 'content-type: application/json;charset=UTF-8' -H 'accept: application/json, text/plain, */*' -H 'referer: $url' -H 'authority: recruiting.adp.com' -H '$cookie' -H 'sec-fetch-site: same-origin' --data-binary $'{"filters":[{"name":"country","label":"Country"},{"name":"state","label":"State"},{"name":"grp","label":"Job Type"},{"name":"ptitle","label":"Job"}],"results":{"pageTitle":"Search Results","zeroResultsMessage":"We\'re sorry but we have no job openings at this time that match your search criteria. Please try another search.","searchFailureMessage":"Oops\u0021 Something went wrong.  Search has encountered a problem. Try searching again","resultsFoundLabel":"results found","bookmarkText":"Bookmark This","pageSize":"100","sortOrder":"00001000","shareText":"Share","fields":[{"name":"ptitle","label":"Published Job Title"},{"name":"location","label":"Location"},{"name":"position","label":"Position"}]},"pagefilter":{"page": 3},"rl":"enUS"}' --compressed

echo "$url $pg"回声“$url $pg”

But "pagefilter":{"page": 3},"rl":"enUS"}' in this page attribute script is working when it's a numeric value but i want to have it like "pagefilter":{"page": "$page"},"rl":"enUS"}'但是 "pagefilter":{"page": 3},"rl":"enUS"}' 在这个页面属性脚本中当它是一个数值时正在工作,但我希望它像 "pagefilter":{"page": "$page"},"rl":"enUS"}'

Unable to understand why it's not working.无法理解为什么它不起作用。 Tried escaping double quotation too.也尝试转义双引号。

Input is like /s.sh "URL" 3 1234输入类似于 /s.sh "URL" 3 1234

Wrap your variable with double/single/double quotes "'" will help in most cases大多数情况下,用双引号/单引号/双引号包裹你的变量"'"会有所帮助

page=3
curl -d'{"page":"'"$page"'"}' http://...

This will be expanded to这将扩展到

curl -d'{"page":"3"}' http://...

Or use only single/double qoutes '" to expand to a number:或者只使用单/双引号'"扩展为一个数字:

curl -d'{"page":'"$page"'}' http://...

Will be expandend to将扩展到

curl '-d{"page":3}'

Thanks to @jschnnasse Tried with bash -x and found out that only '$pg' taking the value "pg" , "'$pg'" and '"$pg"' not working following code is working perfectly.感谢@jschnnasse 尝试使用 bash -x 并发现只有 '$pg' 取值 "pg" 、 "'$pg'" 和 '"$pg"' 不工作 以下代码工作正常。

url=$1
pg=$2
coockie=$3

curl '$url' -H 'sec-fetch-mode: cors' -H 'origin: $url' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36' -H 'content-type: application/json;charset=UTF-8' -H 'accept: application/json, text/plain, */*' -H 'referer: $url' -H 'authority: recruiting.adp.com' -H '$cookie' -H 'sec-fetch-site: same-origin' --data-binary $'{"filters":[{"name":"country","label":"Country"},{"name":"state","label":"State"},{"name":"grp","label":"Job Type"},{"name":"ptitle","label":"Job"}],"results":{"pageTitle":"Search Results","zeroResultsMessage":"We\'re sorry but we have no job openings at this time that match your search criteria. Please try another search.","searchFailureMessage":"Oops\u0021 Something went wrong.  Search has encountered a problem. Try searching again","resultsFoundLabel":"results found","bookmarkText":"Bookmark This","pageSize":"100","sortOrder":"00001000","shareText":"Share","fields":[{"name":"ptitle","label":"Published Job Title"},{"name":"location","label":"Location"},{"name":"position","label":"Position"}]},"pagefilter":{"page": '$pg'},"rl":"enUS"}' --compressed

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM