2016-12-19 11 views
0

私は"%20"を解釈せずにbashの日付形式にしようとしています。 curlリクエストで日付文字列をパラメータとして使用しています。
これは、パラメータに日付文字列がスペース(YYYY-MM-DD HH:MM:SS)でフォーマットされたAPIを呼び出す際の私のアプローチでした。
apiのドキュメントには、"date=2014-04-30%2002:18:36"という例があります。
しかし、同社のウェブ版のAPIは"date=2014-04-30+02%3A18%3A36"です。カールデータに文字列として "%20"を挿入するにはどうすればよいですか?

私は2016-12-19%2016:03:26を生成しますが、正しく動作していないシェルスクリプトでdate=$(date +%Y-%m-%d%%20%H:%M:%S)を試しました。
私はまた、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

は、あなたが他のバージョンを使用してみましたが。あなたの要求に '%20'の代わりに' + 'を使用しますか? – segFault

+0

@sebastianForsberg私は日付= $(日付+%Y-%m-%d +%H %% 3A%M %% 3A%S)を試しました。これは私に2016-12-19 + 16%3A17%3A41を与えます。しかし、返されたデータはまだ不正確です。ウェブサイトのバージョンは「2016-12-12 00:00:00」を受け取り、正確なデータを取得することができます。 – Cirakuze

答えて

1

一方のバージョンシェル変数にそれを得るために、その後、カールする:カールURLエンコード自体をやらせるために

#!/bin/bash 
output=$(date "+%Y-%m-%d %H:%M:%S" | sed 's/ /%20/g') 
curl -d date=$output http://example.com 

一つの方法:

curl --data-urlencode date=$(date "+%Y-%m-%d %H:%M:%S") http://example.com 
+0

upvoteに十分な担当者がいませんが、ありがとうございます。 – Cirakuze

関連する問題