我想创建一个 BASH 脚本,它逐字读取二进制文件(32 位)并将该字传递给名为 devmem 的应用程序。
现在,我有:
...
for (( i=0; i<${num_words}; i++ ))
do
val=$(dd if=${file_name} skip=${i} count=1 bs=4 2>/dev/null)
echo -e "${val}" # Weird output...
devmem ${some_address} 32 ${val}
done
...
${val} 有一些奇怪的(ASCII?)格式字符表示,看起来像带问号的菱形。
如果我将“val =”行替换为:
val=$(dd ... | xxd -r -p)
我得到了我想要的输出。
使用 BASH 复制 xxd 功能的最简单方法是什么?
注意:我正在开发一个嵌入式 Linux 项目,其中要求不允许我安装 xxd。
这个脚本是性能驱动的,如果我的方法有误,请纠正我,但出于这个原因,我选择了 (dd -> binary word -> devmem) 而不是 (hexdump -> file, parse file -> devmem)。- 不管我的最终目标的最佳路线是什么,这个练习给我带来了一些麻烦,我非常感谢有人帮助我弄清楚如何做到这一点。
谢谢!