【问题标题】:Bash Shell Curl JSON variable passBash Shell Curl JSON 变量传递
【发布时间】:2019-10-23 11:07:40
【问题描述】:

我试图从 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"

但是“pagefilter”:{“page”:3},“rl”:“enUS”}' 在这个页面属性脚本中,当它是一个数值但我希望它像“pagefilter”:{“ page": "$page"},"rl":"enUS"}'

无法理解为什么它不起作用。也尝试转义双引号。

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

【问题讨论】:

  • 嗨,您能否将 curl 调用的相关部分放入您的帖子中?
  • 我已经添加了代码。

标签: json shell curl


【解决方案1】:

用双引号/单引号/双引号将变量括起来"'" 将有助于most cases

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

这将扩展为

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

或仅使用单/双 qoutes'" 扩展为数字:

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

将扩展至

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

【讨论】:

  • 也许只用'" 试试第二个。如果这没有帮助,我们就走错了路。
  • 尝试了所有但没有工作。仅在发送静态号码时才有效。
  • 那么你传递了错误的变量。使用bash -x 执行您的脚本以检查正在发生的事情。
  • 好的,检查那个。
  • 谢谢。找到发布的解决方案。
【解决方案2】:

感谢@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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多