После того, как я использую следующую команду,
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. Но я согласен с вашей общей точкой зрения.