2016-12-22 19 views
1

POSTリクエストを作成しようとしています。以下は問題なく動作します。bash curl POSTリクエスト:変数を使用する "-d"オプション

# Get expected response 
curl http://localhost:9020/xxx/xxxx/ -H Content-type:application/json 
-H Accept:application/json -d '{"LED":{ 
"language":"CHINESE"}, "text":"1928年11月22日"}' 

しかし、私は試してみて-dオプションカールの値を設定している場合、サーバーに要求を送信することはできません。

var="{\"LED\":{ \"language\":\"CHINESE\"}, \"text\":\"1928年11月22日\"}" 
# No Response 
curl http://localhost:9020/xxx/xxxx/ -H Content-type:application/json 
-H Accept:application/json -d $var 

後者がなぜ機能しないのか説明できますか?私はさまざまなエスケープ文字を試しましたが、それには運がありません。二重引用符、値がスペース、 に分割し、シェルは 、curlにそのように複数の追加の引数を解釈しているが、あなたが必要とすることなく

curl http://localhost:9020/xxx/xxxx/ -H Content-type:application/json \ 
-H Accept:application/json -d "$var" 

答えて

1

あなたは、変数を二重引用符に必要その値は単一の引数になります。 それは二重引用符が達成するものです。

+0

ありがとうございました - 変数を関数に渡すときの解決策としてこれも出てきました。実現しているはずです! – JSB

関連する問題