Depois de usar o seguinte comando,
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
Não consigo abrir o tmp.png como um arquivo PNG. Talvez algumas informações sejam perdidas quando eu uso $pngString
para armazenar o arquivo de imagem.
Portanto, a pergunta é: como posso armazenar as informações completas da imagem usando uma variável no script bash?
cat
e echo
todos os seus tipos estão no coração utilitários de texto . Soltá-los sem querer em arquivos binários terá resultados imprevisíveis. É por isso que coisas como base64
foram inventadas.
cat example.png > tmp.png
ou melhor ainda cp example.png tmp.png
?
cat
não é realmente um utilitário de texto. É a substituição de comando (que retira as novas linhas à direita), a atribuição de variável (que não pode conter bytes nulos) e o echo
comando (que pode interpretar as seqüências de barra invertida) que manipularão o binário, não cat
. Mas eu concordo com o seu ponto de vista geral.