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