Nachdem ich den folgenden Befehl verwende,
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
Ich kann die Datei tmp.png nicht als PNG-Datei öffnen. Möglicherweise gehen beim $pngString
Speichern der Bilddatei einige Informationen verloren .
Die Frage ist also: Wie kann ich die vollständigen Bildinformationen mit einer Variablen im Bash-Skript speichern?
cat
und echo
und alle seine ilk sind im Innersten Text - Utilities. Wenn Sie sie in Binärdateien ahnungslos verlieren, kann dies zu unvorhersehbaren Ergebnissen führen. Deshalb wurden solche Dinge base64
erfunden.
cat example.png > tmp.png
oder noch besser cp example.png tmp.png
?
cat
ist nicht wirklich ein Textdienstprogramm . Es ist die Befehlsersetzung (die nachfolgende Zeilenumbrüche entfernt), die Variablenzuweisung (die keine Null-Bytes enthalten echo
darf ) und der Befehl (der möglicherweise Backslash-Sequenzen interpretiert), der die Binärdatei kaputt macht, nicht cat
. Aber ich stimme Ihrem allgemeinen Standpunkt zu.