Після використання наступної команди,
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
Не можу відкрити tmp.png як файл PNG. Можливо, деяка інформація втрачається, коли я використовую $pngString
для зберігання файлу зображень.
Отже, питання полягає в тому, як я можу зберігати повну інформацію про зображення, використовуючи змінну в скрипті bash?
cat
і echo
всі її помилки лежать в основі текстових утиліт. Якщо їх не пустить на бінарні файли, вони матимуть непередбачувані результати. Ось чому такі речі, як base64
придумані.
cat example.png > tmp.png
чи ще краще , cp example.png tmp.png
?
cat
насправді не є текстовою утилітою. Це заміна команд (яка позбавляє останніх рядків), призначення змінної (яка не може містити нульових байтів) і echo
команда (яка може інтерпретувати послідовності зворотної косої риси), які будуть маніпулювати бінарними, а не cat
. Але я згоден з вашою загальною точкою.