我正在尝试用dd做一些技巧。我认为可以在名为“ header”的变量中存储一些十六进制值,以将其通过管道传递给dd。
我没有变量的第一步是:
$ echo -ne "\x36\xc9\xda\x00\xb4" |dd of=hex
$ hd hex
00000000 36 c9 da 00 b4 |6....|
00000005
之后,我尝试了这个:
$ header=$(echo -ne "\x36\xc9\xda\x00\xb4")
$ echo -n $header | hd
00000000 36 c9 da b4 |6...|
00000004
如您所见,我\x00
在$header
变量中失去了价值。有人对此行为有解释吗?这真让我抓狂。
您缺少引号应该是,
—
ctrl-alt-delor
header="$(echo -ne "\x36\xc9\xda\x00\xb4")"; echo -n "$header" | hd
但这只会给出相同的结果。
这可行
—
ctrl-alt-delor
header="\x36\xc9\xda\x00\xb4"; echo -n "$header" | hd
,但与存储人类可读形式不同。
bash: warning: command substitution: ignored null byte in input
。