Después de usar el siguiente comando,
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
No puedo abrir el archivo tmp.png como un archivo PNG. Tal vez se pierde algo de información cuando uso $pngStringpara almacenar el archivo de imagen.
Entonces la pregunta es: ¿cómo puedo almacenar la información de imagen completa usando una variable en script bash?
caty echotodo lo demás son utilidades de texto en el fondo . Dejarlos soltar desprevenidos en archivos binarios tendrá resultados impredecibles. Por eso base64se inventaron cosas como .
cat example.png > tmp.pngo mejor aún cp example.png tmp.png?
catno es realmente una utilidad de texto. Es la sustitución de comandos (que elimina las nuevas líneas finales), la asignación de variables (que no puede contener bytes nulos) y el echocomando (que puede interpretar secuencias de barra invertida) lo que destrozará el binario, no cat. Pero estoy de acuerdo con su punto general.