curl コマンドのデータを url エンコードするにはどうすればいいですか? 質問する

curl コマンドのデータを url エンコードするにはどうすればいいですか? 質問する

パラメータを取得して 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

おすすめ記事