「@」で始まるcURLを使用してコンテンツを公開するには?

「@」で始まるcURLを使用してコンテンツを公開するには?

注文する

curl http://localhost/ --data @hello

ファイルから読み取ろうとしますhello。このシンボルをどのように回避できますか@

ベストアンサー1

カールの内部についてもっと学ぶことなく、カールに直接パイプすることをお勧めします。

printf @hello | curl http://localhost/ --data @-

アノテーションで@ulrich-schwarzが提案したように、より便利な場合は --data @<(echo @hello)使用することもできます(すべてのシェルがこの構文をサポートしているわけではありません)。

@curl-7.41.0のソースコードを見ると、ファイル名として解釈されるのを防ぐためにシンボルをエスケープする方法はありません。

if('@' == is_file) {
  /* a '@' letter, it means that a file name or - (stdin) follows */

  if(curlx_strequal("-", p)) {
    file = stdin;
    set_binmode(stdin);
  }
  else {
    file = fopen(p, "rb");
    if(!file)
      warnf(config,
            "Couldn't read data from file \"%s\", this makes "
            "an empty POST.\n", nextarg);
  }

  /* ... */
}

したがって、残念ながら、私たちは上記のパイプラインソリューションに閉じ込められているようです。

おすすめ記事