使用MINIX ash中的od将从二进制读取的以null结尾的字符串读入变量

时间:2017-04-06 09:13:35

标签: bash minix ash

相当新手的问题,但我坚持了一段时间:我有一个问题是读取并解析存储在我知道的地址的硬盘中的字符串...

我不知道字符串的长度,只有它的最大长度为n。它已写入n - 用零启动的缓冲区,因此其hexdump类似于xx xx xx xx 00 00 00 00 00,其中xx的十六进制表示正确的字符串字符。

因为我知道字符串的地址,我使用tmp将其复制到二进制dd if=<hd> of=tmp文件中(使用正确的bs / count / skip来获取字符串的n字节缓冲)。然后在bash中(或者更准确地说是MINIX ash)我尝试使用od来解析它并读入变量但我无法摆脱空格/空值:

name=$(od -Anx -tc tmp)
echo $name

我得到的是J O H N \0 \0 \0 \0 \0,而不仅仅是JOHN

1 个答案:

答案 0 :(得分:1)

你可以使用一个简单的技巧,它依赖于bash strings cannot contain a NUL character

这一事实
name="$(cat tmp)"
echo $name