Après avoir utilisé la commande suivante,
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
Je ne peux pas ouvrir le tmp.png en tant que fichier PNG. Peut-être que certaines informations sont perdues lorsque j'utilise $pngString
pour stocker le fichier image.
La question est donc: comment puis-je stocker les informations d'image complètes en utilisant une variable dans le script bash?
cat
et echo
et tous ses semblables sont au cœur des utilitaires de texte . Les laisser se perdre sans méfiance sur les fichiers binaires aura des résultats imprévisibles. C'est pourquoi des choses comme base64
ont été inventées.
cat example.png > tmp.png
ou mieux encore cp example.png tmp.png
?
cat
n'est pas vraiment un utilitaire de texte. C'est la substitution de commande (qui supprime les sauts de ligne de fin), l'affectation de variable (qui ne peut pas contenir d'octets nuls) et la echo
commande (qui peut interpréter les séquences de barre oblique inverse) qui gèreront le binaire, non cat
. Mais je suis d'accord avec votre point global.