linux下用shell来
CURL POST JSON 数据遇到的问题
Trouble with bash shell script, attempting to POST variable JSON data using cURL
stackoverflow上的问题链接:
http://stackoverflow.com/questions/26614423/trouble-with-bash-shell-script-attempting-to-post-variable-json-data-using-curl
主要问题:Linux下在shell中用curl post json数据时,不能直接执行命令,必须用eval执行拼装好的curl命令,单独执行不行
以下为部分shell代码,其中sedtest为拼接好的json字符串,exestring为拼接好的curl json命令。#号注释掉的直接在shell中用curl命令和用``执行拼接好的命令都不行,必须用eval执行拼接好的命令。
sedtest=`echo $sedtest | sed 's/$/&}/g'`
echo sedtest $sedtest
exestring="curl -l -H \"Content-type: application/json;charset=UTF-8\" -H \"X-Forwarded-For: 20.20.20.20\" -X POST -d '$sedtest' http://192.168.3.202/vbox_interface_status_report"
#echo $exestring
#curl -l -H "Content-type: application/json;charset=UTF-8" -H "X-Forwarded-For: 20.20.20.20" -X POST -d '$sedtest' http://192.168.3.202/vbox_interface_status_report
#`$exestring`
echo sedtest $sedtest
exestring="curl -l -H \"Content-type: application/json;charset=UTF-8\" -H \"X-Forwarded-For: 20.20.20.20\" -X POST -d '$sedtest' http://192.168.3.202/vbox_interface_status_report"
#echo $exestring
#curl -l -H "Content-type: application/json;charset=UTF-8" -H "X-Forwarded-For: 20.20.20.20" -X POST -d '$sedtest' http://192.168.3.202/vbox_interface_status_report
#`$exestring`
eval $exestring
注意,自己拼接的json格式字符串,如果不确定格式是否正确,可以借助在线检查工具进行格式化检查。
www.bejson.com