カールとbase64を1つのコマンドに結合しますか?

カールとbase64を1つのコマンドに結合しますか?

サーバー上のファイルのPOSTをBase64にエンコードして実行できるコマンドで、およびをcurl組み合わせたいです。base64私は以下を試しました:

curl 'http://localhost:5000/files' -X POST -H 'Content-Type: application/json' -d '{"file": "$(base64 hello.txt)"}'

"$(base64 hello.txt)"ただし、実行結果を上書きせずに文字列リテラルを公開するだけですbase64 hello.txt。では、どうすれば正しくできますか?

答え1

単純な引用符を使用すると、何も解釈されません。

~$ echo 'foo:$var bar:$(base64 foo) something'
foo:$var bar:$(base64 foo) something

説明が必要な場合は、引用符をオフにする必要があります。

~$ echo 'foo:'$var' bar:'$(base64 foo)' something'
foo:foo bar:Zm9vCg== something

何を含めることができるかわからないので、二重引用符を使用することをお勧めします。

~$ echo 'foo:'"$var"' bar:'"$(base64 foo)"' something'
foo:foo bar:Zm9vCg== something

関連情報