我试图将"%20"
置于bash日期格式中而不进行解释。我在curl
请求中使用日期字符串作为参数
这是我调用api的方法,其参数包含一个用空格(YYYY-MM-DD HH:MM:SS)
格式化的日期字符串
api的doc给出了一个例子"date=2014-04-30%2002:18:36"
但该公司的api网络版显示"date=2014-04-30+02%3A18%3A36"
。
我在我的shell脚本中尝试了date=$(date +%Y-%m-%d%%20%H:%M:%S)
,它确实产生了2016-12-19%2016:03:26
,但仍然无法正常工作。
我也试过curl --data-urlencode
但没有成功。
我的方法完全错了吗?
更新其他信息:我已尝试date=$(date +%Y-%m-%d+%H%%3A%M%%3A%S)
,这会给我2016-12-19+16%3A17%3A41
。但返回的数据仍然不准确
网站上的版本接受"2016-12-12 00:00:00"
,我可以获得准确的数据。
答案 0 :(得分:2)
将一个版本放入shell变量然后卷曲:
#!/bin/bash
output=$(date "+%Y-%m-%d %H:%M:%S" | sed 's/ /%20/g')
curl -d date=$output http://example.com
让curl自己进行URL编码的一种方法:
curl --data-urlencode date=$(date "+%Y-%m-%d %H:%M:%S") http://example.com