将curl 和base64 合并到一个命令中?

将curl 和base64 合并到一个命令中?

我想将文件的 Base64 编码 POST 到服务器,将curl和组合base64成一个我可以执行的命令。我尝试过以下方法:

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

但它只是 POST 字符串文字"$(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

相关内容