在 MINIX ash 中使用 od 将一个以 null 结尾的字符串从二进制读入变量
Read a null-terminated string from binary into variable using od in MINIX ash
相当新手的问题,但我坚持了一段时间:我在读取和解析存储在硬盘驱动器中我知道的地址的字符串时遇到问题...
我不知道字符串的长度,只有它的最大长度说 n
。它已被写入 n
- 以零开头的缓冲区,因此它的 hexdump 类似于 xx xx xx xx 00 00 00 00 00
,其中 xx
是十六进制的正确字符串字符。
所以我知道字符串的地址,我使用 dd if=<hd> of=tmp
将它复制到二进制 tmp
文件中(使用适当的 bs/count/skip 来获取 n
字节缓冲区)。然后在 bash (或者更确切地说是在 MINIX ash 中)我尝试使用 od
来解析它并读入变量但我无法摆脱 spaces/nulls:
name=$(od -Anx -tc tmp)
echo $name
我得到 J O H N [=19=] [=19=] [=19=] [=19=] [=19=]
而不是简单的 JOHN
你可以使用一个简单的技巧,它依赖于 bash strings cannot contain a NUL character:
name="$(cat tmp)"
echo $name
相当新手的问题,但我坚持了一段时间:我在读取和解析存储在硬盘驱动器中我知道的地址的字符串时遇到问题...
我不知道字符串的长度,只有它的最大长度说 n
。它已被写入 n
- 以零开头的缓冲区,因此它的 hexdump 类似于 xx xx xx xx 00 00 00 00 00
,其中 xx
是十六进制的正确字符串字符。
所以我知道字符串的地址,我使用 dd if=<hd> of=tmp
将它复制到二进制 tmp
文件中(使用适当的 bs/count/skip 来获取 n
字节缓冲区)。然后在 bash (或者更确切地说是在 MINIX ash 中)我尝试使用 od
来解析它并读入变量但我无法摆脱 spaces/nulls:
name=$(od -Anx -tc tmp)
echo $name
我得到 J O H N [=19=] [=19=] [=19=] [=19=] [=19=]
而不是简单的 JOHN
你可以使用一个简单的技巧,它依赖于 bash strings cannot contain a NUL character:
name="$(cat tmp)"
echo $name