shellcurl+echo+jq请求并解析json
jq命令允许直接在命令⾏下对JSON进⾏操作,包括分⽚、过滤、转换等
参考⽂档:
curl
shell命令
jq命令
| 运算符
管道符号,是unix⼀个很强⼤的功能,符号为⼀条竖线:"|"。
curl是什么命令
⽤法: command 1 | command 2
他的功能是把第⼀个命令command 1执⾏的结果作为command2的输⼊传给command 2,例如:
$ls -s|sort -nr (请注意不要复制$符号进去哦)
-
s 是file size,-n是numeric-sort,-r是reverse,反转
该命令列出当前⽬录中的⽂档(含size),并把输出送给sort命令作为输⼊,sort命令按数字递减的顺序把ls的输出排序。
Data from stdin with -d @-
echo -e '...\n' | curl -X POST --data-binary @- foo
参数 @- 告诉 curl to pull in from STDIN.
案例:
HOST_URL=""
location="beijing"
user="tom"
#--compact-output /-c:使输出紧凑,⽽不是把每⼀个JSON对象输出在⼀⾏。
#--null-input/ -n:不读取任何输⼊,过滤器运⾏使⽤null作为输⼊。⼀般⽤作从头构建JSON数据。
#--arg a v      set variable $a to value <v>;
request=`jq -c -n --arg location "$location" --arg user "$user" '{"method":"get_options","params":{"location": $location,"user": $user}}' 2>/dev/null`
#echo 配合@-,前置的输出作为 --data的参数
#--data 等同 -d, -d参数⽤于发送 POST 请求的数据体。
#-k/--insecure 允许不使⽤证书到SSL站点
#-L参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。
#--connect-timeout <seconds> 设置最⼤请求时间
#-m/--max-time <seconds>  设置最⼤传输时间
#-s/--silent 静⾳模式。不输出任何东西
#-X/--request <command>          指定什么命令
response=`echo "$request" | curl --insecure -L --data @- --connect-timeout 7 --max-time 15 --silent -XPOST "$HOST_URL/worker/api" -H "Content-Type: applica

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。