• ベストアンサー

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

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

-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

inshin
質問者

お礼

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

関連するQ&A