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 $pngString
para 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?
cat
y echo
todo lo demás son utilidades de texto en el fondo . Dejarlos soltar desprevenidos en archivos binarios tendrá resultados impredecibles. Por eso base64
se inventaron cosas como .
cat example.png > tmp.png
o mejor aún cp example.png tmp.png
?
cat
no 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 echo
comando (que puede interpretar secuencias de barra invertida) lo que destrozará el binario, no cat
. Pero estoy de acuerdo con su punto general.