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).
dddo skopiowania pojedynczych bajtów (ustawiająccountna1). Jednak nie jestem pewien, czy je przechowywać.