1. ホーム
  2. bash

[解決済み] curlコマンドのデータをurlエンコードするには?

2022-03-24 15:57:01

質問

私は、パラメータを受け取り、curlを介してWebサイトに送信するテスト用のbashスクリプトを書こうとしています。 私は、特殊文字が適切に処理されることを確認するために、値をURLエンコードする必要があります。 これを行うための最良の方法は何ですか?

今のところ、私の基本的なスクリプトは以下の通りです。

#!/bin/bash
host=${1:?'bad host'}
value=$2
shift
shift
curl -v -d "param=${value}" http://${host}/somepath $@

解決方法は?

使用方法 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 -G \
    --data-urlencode "p1=value 1" \
    --data-urlencode "p2=value 2" \
    http://example.com
    # http://example.com?p1=value%201&p2=value%202