Ich versuche ehrgeizig, einen C ++ - Code aus einer Vielzahl von Gründen in Bash zu übersetzen.
Dieser Code liest und manipuliert einen für mein Unterfeld spezifischen Dateityp, der vollständig binär geschrieben und strukturiert ist. Meine erste Aufgabe im Zusammenhang mit Binärdateien besteht darin, die ersten 988 Bytes des Headers so wie sie sind zu kopieren und sie in eine Ausgabedatei zu schreiben, in die ich weiter schreiben kann, während ich den Rest der Informationen generiere.
Ich bin mir ziemlich sicher, dass meine derzeitige Lösung nicht funktioniert, und realistisch gesehen habe ich keinen guten Weg gefunden, dies festzustellen. Selbst wenn es richtig geschrieben ist, muss ich wissen, wie ich das testen würde, um sicherzugehen!
Das mache ich gerade:
hdr_988=`head -c 988 ${inputFile}`
echo -n "${hdr_988}" > ${output_hdr}
headInput=`head -c 988 ${inputTrack} | hexdump`
headOutput=`head -c 988 ${output_hdr} | hexdump`
if [ "${headInput}" != "${headOutput}" ]; then echo "output header was not written properly. exiting. please troubleshoot."; exit 1; fi
Wenn ich diesen Teil der Datei mit hexdump / xxd auschecke, obwohl ich das meiste nicht genau lesen kann, scheint etwas nicht in Ordnung zu sein. Und der Code, den ich zum Vergleich geschrieben habe, sagt mir nur, ob zwei Zeichenfolgen identisch sind, nicht, ob sie so kopiert werden, wie ich sie haben möchte.
Gibt es eine bessere Möglichkeit, dies in Bash zu tun? Kann ich einfach binäre Bytes in native-binary kopieren / lesen, um sie wörtlich in eine Datei zu kopieren? (und idealerweise auch als Variable speichern).
dd
einzelnen Bytes kopieren (seine Einstellungcount
zu1
). Ich bin mir jedoch nicht sicher, ob ich sie aufbewahren soll.