Z wielu powodów staram się tłumaczyć kod c ++ na bash.
Ten kod odczytuje i manipuluje typem pliku specyficznym dla mojego subpola, który jest zapisany i ustrukturyzowany całkowicie w formacie binarnym. Moim pierwszym zadaniem związanym z plikami binarnymi jest skopiowanie pierwszych 988 bajtów nagłówka, dokładnie tak, jak jest, i umieszczenie ich w pliku wyjściowym, do którego mogę kontynuować zapisywanie podczas generowania reszty informacji.
Jestem całkiem pewien, że moje obecne rozwiązanie nie działa, i realistycznie nie znalazłem dobrego sposobu, aby to ustalić. Więc nawet jeśli jest napisane poprawnie, muszę wiedzieć, jak bym to przetestował, aby się upewnić!
Oto co teraz robię:
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
Jeśli użyję hexdump / xxd do sprawdzenia tej części pliku, chociaż nie mogę dokładnie odczytać większości tego pliku, coś wydaje się nie tak. A kod, który napisałem dla porównania, mówi mi tylko, czy dwa ciągi są identyczne, a nie, jeśli są kopiowane tak, jak chcę.
Czy jest lepszy sposób na zrobienie tego w bash? Czy mogę po prostu skopiować / odczytać bajty binarne w natywnym pliku binarnym, aby skopiować je do pliku dosłownie? (i idealnie, aby przechowywać również jako zmienne).
dd
do skopiowania pojedynczych bajtów (ustawiająccount
na1
). Jednak nie jestem pewien, czy je przechowywać.