Sto ambiziosamente cercando di tradurre un codice c ++ in bash per una miriade di ragioni.
Questo codice legge e manipola un tipo di file specifico per il mio sottocampo che è scritto e strutturato completamente in binario. Il mio primo compito relativo al binario è quello di copiare i primi 988 byte dell'intestazione, esattamente come sono, e inserirli in un file di output su cui posso continuare a scrivere mentre generi il resto delle informazioni.
Sono abbastanza sicuro che la mia soluzione attuale non funzioni, e realisticamente non ho trovato un buon modo per determinarlo. Quindi, anche se in realtà è scritto correttamente, devo essere sicuro di come testarlo!
Questo è quello che sto facendo in questo momento:
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
Se uso hexdump / xxd per dare un'occhiata a questa parte del file, anche se non riesco a leggerne la maggior parte, qualcosa sembra sbagliato. E il codice che ho scritto per il confronto mi dice solo se due stringhe sono identiche, non se sono copiate nel modo in cui voglio che siano.
C'è un modo migliore per farlo in bash? Posso semplicemente copiare / leggere byte binari in nativo-binario, per copiarli su un file alla lettera? (e idealmente anche da memorizzare come variabili).
dd
per copiare singoli byte (impostandolocount
su1
). Non sono sicuro di conservarli, però.