注文する
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);
}
/* ... */
}
したがって、残念ながら、私たちは上記のパイプラインソリューションに閉じ込められているようです。