我如何把"%20"作为卷曲数据中的字符串?

时间:2016-12-19 21:40:22

标签: bash curl urlencode

我试图将"%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",我可以获得准确的数据。

1 个答案:

答案 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