用curl post json的小技巧
最近有个需求是写一个能直接post json数据到某个位置的bash脚本,在网上查到可以用curl实现。由于json包含双引号,只能将整个字符串用单引号包裹来取消转义,但是这么做又不方便注入数据,所以我想了一个方法来实现。
如果要发送固定内容的json是这么做的
1 | # 发送少量数据 |
如果要通过 ./login.sh admin 12345
传入不同的用户名和密码,上面这种方式就行不通了
1 | curl -X POST -H "Content-Type: application/json" -d '{"user":"$1","password":"$2"}' http://192.168.1.1/login |
我的方法是定义一个变量代表双引号,字符串改用双引号以启用字符串注入。建议在本地写好json再全部替换双引号
1 | # q是quote的缩写,当然随便什么名字都可以 |