• ベストアンサー

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

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4854/10269)
回答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

  • 動的ライブラリ中のグローバル変数

    以下の3行を前提条件とします。 メインのプログラムmainと動的ライブラリsub1.soとsub2.soがあります。 sub1.cとsub2.cにはsub.hというヘッダをインクルードしています。 mainはsub1.soおよびsub2.soを実行時に動的にリンクします。 ここでsub1.c中で int TEST=10;と変数を定義しました。 さらにsub.h中にextern int TEST;と変数を宣言しました。 そしてsub2.h中で if(TEST){…}と記述しました。 この状態でコンパイルを実行しました。 ここでmainを実行すると動きません。 調べてみるとsub2.soがTESTがundefined symbolとなっていました。 動的ライブラリ間での変数の共有の仕方は上の書き方では不正確なのでしょうか?

  • smbmount時のエラーについて

    こんにちは。 現在、VineLinux3.2でsmbcountを使用し、 ネットワーク上のフォルダをマウントしようと しているのですが以下のようなエラーが発生して しまいました。どなかたわかる方がいらしたら 解決方法を教えてください。 ・実行コマンド smbmount //192.168.XX.X/test /mnt/smb -o username=XXX(コンピュータ名) ・エラー内容 Unknown parameter encountered:"host allow" lgnoring unknown parameter "host allow" Could not resolve mount point /mnt/smb

  • DNSの名前解決の質問です。

    DNSの名前解決の質問です。 host コマンドで以下の結果となります。 % host example111.jp Host example111.jp not found: 3(NXDOMAIN) % host example222.jp ;; connection timed out; no servers could be reached 前者は理解できるのですが、後者はどういう意味でしょうか? 前者との違いが知りたいです。 しばらく待たされた後、「TimeOut」となるのですが、 この時、どういうやり取りがなされているのでしょうか?

  • 変数参照

    test1.phpは文字列をハイパーテキストリンクに変換するスクリプトです。 これはうまく動いています。 <?php //test1.php // start set message $msg = "testtesttesttest http://www.example.com testtesttesttest"; // end set message // start set generate URL link $patterns = '(https?:\/\/[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+)'; $replacements = '<a href="\\1">\\1</a>'; $msg = ereg_replace($patterns, $replacements, $msg); // end set generate URL link // start set message echo $msg; // end set message ?> test2.phpは文字列をハイパーテキストリンクに変換して最後尾に付加するスクリプトです。 これは動きません。 $replacementsにセットされたはずの変数がうまく参照できないのです。 <?php //test2.php // start set message $msg = "testtesttesttest http://www.example.com testtesttesttest"; // end set message // start set generate URL link $patterns = '(https?:\/\/[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+)'; $replacements = '<a href="\\1">\\1</a>'; $msg = ereg_replace($patterns, "", $msg); // end set generate URL link // start set message echo $msg . $replacements; // end set message ?> 質問 1 test1.phpが動いてtest2.phpが動かない理由はなんでしょうか? 2 test2.phpの目的を達するためにはどう書けばよいでしょうか?

    • ベストアンサー
    • PHP
  • エクセルの変数をアクセスでも使いたい。

    エクセルの標準モジュールには Option Explicit Public 文字列 As String Public アクセス As Object Public Sub エクセル側テスト() 文字列 = "あ" Set アクセス = GetObject("C:\db1.mdb") If Not アクセス Is Nothing Then アクセス.Run "アクセス側テスト" End If Set アクセス = Nothing End Sub アクセス(db1.mdb)の標準モジュールには Option Compare Database Option Explicit Public 文字列 As String Sub アクセス側テスト() MsgBox 文字列 End Sub という風にコードを書きましたが やはりアクセスではエクセルで指定した変数が受け継がれません。 これを「アクセス側テスト」のマクロでもmsgboxで「あ」と表示させるにはどうすればいいのでしょうか? よろしくお願いします。

  • PHPのcurlの結果が展開されない

    PHPのcurlやsnoopyといったライブラリを使用して、外部サイトと自動で連携できるようなツールをつくりたいと思っています。 自動でログインさせるところまではできたのですが、ログイン後遷移したページの結果文字列(html)がテンプレートファイルのまま返ってきてしまっており、内容が取得できません。 結果の文字列は <script type="text/x-handlebars-template"> ~ </script> で囲まれており、中身は <div class="header"> <div class="header_aa"> {{#user}}{{> profile}}{{/user}} </div> などとなっており、テンプレートファイルの記述のままで、変数が展開されていない状態です。 欲しいのはこれが展開(解釈)された後の結果文字列です。 名前からしてhandlebars.jsのテンプレートファイルを使用しているのは分かるのですが、なぜこれは展開されないのでしょうか? PHPプレーンのcurlでアクセスしても、snoopyを使用してアクセスしても結果は同じです。 オプションでもこれを解決するようなものが見当たらず、行き詰まっております。 どうすれば展開後の結果が取得できるのか、ヒントがあれば教えて下さい。 なにとぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • Twigテンプレートエンジンの変数使用について

    初めまして。 題の件について2点の質問にご回答いただけたら幸いです。 ■一点目 Twigテンプレート上だけで変数を指定し、それをIf文として使いたいのですが、 良い方法はありますでしょうか? 下記のイメージで行いたいのですが、試しても出来ないので何か良い方法を探しています。 {% set test = '2012-01-01 01:00:00' %} {% if "now"|date("Y-m-d H:i") > {{test}} %} ■二点目 変数にURLを指定したいのですが、文字列としてしか出てこなくて困っています。 フィルターをかければいいのかとも思ったのですが、どんなフィルタを使えばいいかわからない状態です。 {% set test = 'http://~~~' %} このように変数でURLを指定したいのですが…. どうにかならないでしょうか? なんとかご助力をお願いしますm(__)m

    • 締切済み
    • PHP
  • セコンドライフで入れません?!

    Second Lifeへうまく入れません?! アカウントはうまく取れたはずですが(Thank you for creating your Second Life accountと出ましたので)、S.L.のiconをPCの起動ページ上に立て、それをクリックして、S.L.の初期?画面が出てきました。その左下へ登録のFirst Name,Last Name,PWを入れ、Connectをクリックしましたが、変った画面ではUnable to Connect to Second Life.DNS could not resolve the host name.と出ました。 なぜでしょうか。。。なぜ、登録済みの私のアカウント(host name?)がcound not resolve(S.L.へ入れない?)の状態になるんでしょうか。

  • Cソースにホスト変数を宣言したヘッダをインクルード方法

    C言語ソースにホスト変数を宣言したヘッダをインクルードする記述を教えてください。下記の記述をしたのですが、エラーになります。 EXEC SQL INCLUDE SQLCA; EXEC SQL BEGIN DECLARE SECTION; #include "../host_header.h" EXEC SQL END DECLARE SECTION;

  • C言語でヘッダファイルにグローバル変数を宣言する

    main.hに static int a; と記述し、main.cで #include "main.h" [省略] a=10; のように使用して、-Wallをつけてコンパイルすると、main.cで使用しているにも関わらず、 'a' defined but not used という警告が表示されます。 同様に、関数においても、ヘッダファイルでstaticをつけると ‘~’ declared ‘static’ but never defined と警告されます。 静的グローバル変数などは、ソースファイル内で宣言しなければいけないのでしょうか?ヘッダファイル内で宣言しても警告が出ないような方法はありますか?