由于种种原因,我正在雄心勃勃地尝试将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
)。不过,我不确定要存储它们。