内部追加コマンドを使用してCurlコマンドを実行するには?

内部追加コマンドを使用してCurlコマンドを実行するには?

次のコマンドを実行したいと思います。

curl -X PUT $URL -H "accept: */*" -H "Content-Type: application/json" -d '{"payload": $(base64 /some/path)`}'

tcshではなくこの構文を使用するbashなので、このコマンドを実行するのは妥当です$(base64 /some/path)Illegal variable nameどのように実行できますか?バックティックを使ってみましたが、成功しませんでした。

答え1

バックティックが機能するはずです。 JSON構文を正しく作成するには、さらに二重引用符文字が必要です。

curl -X PUT $URL -H "accept: */*" -H "Content-Type: application/json" -d '{"payload": "'`base64 /some/path`'"}'

-dパラメーターは3つの部分で構成されています。

   '{"payload": "'
   `base64 /some/path`
   '"}'

最初と3番目は一重引用符を使用するため、二重引用符を含むその中のすべての内容が保持されます。特に、-dパラメーターの最終値は、{ "payload": "af5143676d6d6d6a bcdefc8844"}周囲に二重引用符があり、base64出力で改行文字を置き換えるスペースを含む16進文字列に似ています。遠隔端はこれらのスペースを好まないかもしれません。

関連情報