JSON パスが変数として指定されている場合、bash スクリプトから curl を使用して JSON を送信します。

JSON パスが変数として指定されている場合、bash スクリプトから curl を使用して JSON を送信します。

なぜすべての試みが失敗するのか理解できません。JSON へのパスが変数として定義されているときに、curl を使用して特定の URL に JSON を含む POST リクエストを送信しようとしています。

#!/bin/sh

JSON_TMP=/home/aaa/jsons/make_6h_from_1h.json
curl -X POST -H "Content-Type: application/json" --data-binary "@${JSON_TMP}" http://some-url

私が試したこと(put"@${JSON_TMP}""@$JSON_TMP"@"${JSON_TMP}"その他何でも)はどれも機能しないようです。

さらに厄介なのは、エラー メッセージなどが一切表示されないことです。コマンドを実行すると、プロンプトが再度表示されます。反対側では、JSON が送信されていないことがわかります。

答え1

以下の作品:

body_arg=(--data-binary @${filePath})

curl -X POST -H "Content-Type: application/json" "${body_arg[@]}"  http://some-url

答え2

curl -X POST -i -H "Accept: application/json" -H "Content-Type: application/json" --data-binary --data-binary @${JSON_TMP} http://some-url

@${JSON_TMP} の二重引用符を削除してみてください。

関連情報