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 $pngStringpara armazenar o arquivo de imagem.
Portanto, a pergunta é: como posso armazenar as informações completas da imagem usando uma variável no script bash?
cate echotodos 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 base64foram inventadas.
cat example.png > tmp.pngou melhor ainda cp example.png tmp.png?
catnã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 echocomando (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.