使用以下命令后,
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
我无法将tmp.png作为PNG文件打开。当我$pngString
用来存储图像文件时,某些信息可能会丢失。
所以问题是:如何在bash脚本中使用变量存储完整的图像信息?
cat命令可以正常工作(将图像数据存储在变量中)。只需删除双引号即可。问题是将数据保存在变量中后您要如何处理这些数据?
—
coffeMug 2013年
cat
并且echo
其所有功能都是文本实用程序。毫无疑问地让它们在二进制文件上松动将导致无法预料的结果。这就是为什么base64
发明类似东西的原因。
为什么要将其作为变量?Shell变量通常用于存储少量文本,而不是大量二进制数据。除了zsh之外,任何普通的shell都无法处理变量中的二进制数据(它们扼杀了空字节)。
—
吉尔(Gilles)'“ SO-别再邪恶了”
为什么不只是
—
通配符
cat example.png > tmp.png
更好呢cp example.png tmp.png
?
@Shadur,
—
通配符
cat
实际上不是文本实用程序。是命令替换(删除尾随换行符),变量赋值(不能包含空字节)和echo
命令(可以解释反斜杠序列),它们将破坏二进制文件,而不是cat
。但我同意你的总体观点。