パラメータを取得して curl 経由で Web サイトに送信するテスト用の bash スクリプトを作成しようとしています。特殊文字が適切に処理されるようにするには、値を URL エンコードする必要があります。これを行う最適な方法は何ですか?
これまでの基本的なスクリプトは次のとおりです。
#!/bin/bash
host=${1:?'bad host'}
value=$2
shift
shift
curl -v -d "param=${value}" http://${host}/somepath $@
ベストアンサー1
使用curl --data-urlencode
方法man curl
:
--data
これは、URL エンコードを実行する点を除いて、他のオプションと同様にデータを投稿します。CGI に準拠するには、<data>
パーツは名前で始まり、その後に区切り文字とコンテンツ指定が続く必要があります。
使用例:
curl \
--data-urlencode "paramName=value" \
--data-urlencode "secondParam=value" \
http://example.com
見るマニュアルページ詳細については。
これにはcurl 7.18.0 以降 (2008 年 1 月リリース). を使用してcurl -V
、使用しているバージョンを確認します。
エンコードすることもできますクエリ文字列:
curl --get \
--data-urlencode "p1=value 1" \
--data-urlencode "p2=value 2" \
http://example.com
# http://example.com?p1=value%201&p2=value%202