こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

curlのオプションを変数に入れたい

curlのオプションを変数に入れると…
$ X_example1="-H X-example1: example"
$ curl $X_example1 test.com
curl: (6) Could not resolve host: example
のようになってしまい、正しくヘッダーがセットされないようです。
原因の解説と対策をお願いできないでしょうか。
宜しくお願い致します。

投稿日時 - 2017-07-15 18:24:43

QNo.9352200

暇なときに回答ください

質問者が選んだベストアンサー

-H には引数1つで渡さないといけません。
誤: curl -H Foo: Bar example.com
これは、Foo: だけが -H のパラメーターで、Bar は取得するURL(ホスト名)とみなされます。
正: curl -H 'Foo: Bar' example.com
引用符によって「Foo: Bar」が1つとみなされ、それが-Hのパラメーターになります。

じゃあ、
X_example1="-H 'X-example1: example'"
curl $X_example1 test.com
と書けばいいかというと、そうはなりません。

ただ、シェルの場合、引用符の解釈をした後で、変数展開して、それから引数の分割をするので、変数の中に引用符を含めてもそれは引数の分割には影響しません。もう一回引用符の解釈をして欲しいので、evalを使います。

X_example1="-H 'X-example1: example'"
eval curl $X_example1 test.com

投稿日時 - 2017-07-15 21:42:24

お礼

変数の展開と引数の分割の順番が関係していたのですね。
勉強になりました。ありがとうございました。

投稿日時 - 2017-07-15 22:00:15

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)