Po użyciu następującego polecenia
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
Nie mogę otworzyć pliku tmp.png jako pliku PNG. Być może niektóre informacje są tracone, gdy używam $pngStringdo przechowywania pliku obrazu.
Pytanie brzmi: w jaki sposób mogę przechowywać pełne informacje o obrazie, używając zmiennej w skrypcie bash?
cati echowszystkie podobne są narzędziami tekstowymi . Pozbawienie ich niczego nie podejrzewających plików binarnych przyniesie nieprzewidziane skutki. Właśnie dlatego base64wymyślono takie rzeczy .
cat example.png > tmp.pnglub lepiej cp example.png tmp.png?
cattak naprawdę nie jest narzędziem tekstowym. To podstawienie polecenia (które usuwa końcowe znaki nowego wiersza), przypisanie zmiennej (która nie może zawierać bajtów pustych) i echopolecenie (które może interpretować sekwencje odwrotnego ukośnika), które nie będą miały wpływu na układ binarny cat. Ale zgadzam się z twoim ogólnym punktem.