Я з великої кількості причин намагаюся перевести код c ++ в bash.
Цей код читає та маніпулює типом файлу, характерним для мого підполя, який записаний та повністю структурований у двійковій формі. Моє перше завдання, пов’язане з бінарними файлами, - скопіювати перші 988 байт заголовка точно так, як є, і помістити їх у вихідний файл, до якого я можу продовжувати писати, коли я генерую решту інформації.
Я майже впевнений, що моє поточне рішення не працює, і я реально не знайшов хорошого способу цього визначити. Тож навіть якщо це насправді написано правильно, я мушу знати, як би це перевірити, щоб бути впевненим!
Це те, що я зараз роблю:
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
Якщо я використовую hexdump / xxd, щоб перевірити цю частину файлу, хоча я не можу точно прочитати більшість із них, щось здається не так. І код, який я написав для порівняння, говорить лише мені, якщо два рядки однакові, а не якщо вони скопійовані так, як я хочу, щоб вони були.
Чи є кращий спосіб зробити це в башті? Чи можу я просто скопіювати / прочитати бінарні байти в нативно-бінарний файл, щоб скопіювати його у дослівний файл? (а в ідеалі також зберігати як змінні).
dd
для копіювання окремих байтів (встановивши йогоcount
на1
). Я не впевнений у їх зберіганні.