Tôi tham vọng cố gắng dịch mã c ++ thành bash vì vô số lý do.
Mã này đọc và thao tác một loại tệp cụ thể cho trường con của tôi được viết và cấu trúc hoàn toàn dưới dạng nhị phân. Nhiệm vụ liên quan đến nhị phân đầu tiên của tôi là sao chép 988 byte đầu tiên của tiêu đề, chính xác, và đưa chúng vào một tệp đầu ra mà tôi có thể tiếp tục ghi vào khi tôi tạo phần còn lại của thông tin.
Tôi khá chắc chắn rằng giải pháp hiện tại của tôi không hoạt động, và thực tế tôi đã không tìm ra một cách tốt để xác định điều này. Vì vậy, ngay cả khi nó thực sự được viết chính xác, tôi cần biết làm thế nào tôi sẽ kiểm tra điều này để chắc chắn!
Đây là những gì tôi đang làm ngay bây giờ:
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
Nếu tôi sử dụng hexdump / xxd để kiểm tra phần này của tệp, mặc dù tôi không thể đọc chính xác phần lớn của nó, có vẻ như đã sai. Và mã tôi đã viết để so sánh chỉ cho tôi biết nếu hai chuỗi giống hệt nhau, chứ không phải nếu chúng được sao chép theo cách tôi muốn.
Có cách nào tốt hơn để làm điều này trong bash? Tôi có thể chỉ cần sao chép / đọc byte nhị phân trong tệp nhị phân gốc, để sao chép vào nguyên văn tệp không? (và lý tưởng để lưu trữ như các biến là tốt).
dd
để sao chép các byte cá nhân (thiết lập của nócount
để1
). Tôi không chắc chắn về việc lưu trữ chúng, mặc dù.