Combina curl e base64 em um comando?

0

Gostaria de POSTAR a codificação Base64 de um arquivo para um servidor, combinando curl e base64 em um comando que eu possa executar. Eu tentei o seguinte:

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

Mas apenas envia a string literal "$(base64 hello.txt)" , em vez de substituir o resultado da execução de base64 hello.txt . Então, como faço isso corretamente?

    
por XåpplI'-I0llwlg'I - 23.06.2015 / 16:35

1 resposta

1

Quando você usa aspas simples, nada é interpretado:

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

Você tem que unquote se quiser a interpretação:

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

E como você não sabe o que ele pode conter, é melhor citar duas vezes:

~$ echo 'foo:'"$var"' bar:'"$(base64 foo)"' something'
foo:foo bar:Zm9vCg== something
    
por 23.06.2015 / 16:53