我有这个脚本:
PATTERN=xAB
dd if=/dev/zero count=1 bs=10 | sed "s/\x0/\${PATTERN}/g" > test_ab
hexdump -C test_ab
我得到的输出是:
$ ./make_test
1+0 records in
1+0 records out
10 bytes copied, 0.000147938 s, 67.6 kB/s
00000000 24 7b 50 41 54 54 45 52 4e 7d 24 7b 50 41 54 54 |${PATTERN}${PATT|
00000010 45 52 4e 7d 24 7b 50 41 54 54 45 52 4e 7d 24 7b |ERN}${PATTERN}${|
00000020 50 41 54 54 45 52 4e 7d 24 7b 50 41 54 54 45 52 |PATTERN}${PATTER|
00000030 4e 7d 24 7b 50 41 54 54 45 52 4e 7d 24 7b 50 41 |N}${PATTERN}${PA|
00000040 54 54 45 52 4e 7d 24 7b 50 41 54 54 45 52 4e 7d |TTERN}${PATTERN}|
00000050 24 7b 50 41 54 54 45 52 4e 7d 24 7b 50 41 54 54 |${PATTERN}${PATT|
00000060 45 52 4e 7d |ERN}|
00000064
我希望文件用 0xAB 填充。
您的变量称为
PATTERN1
,但您使用${PATTERN}
(缺少 1)调用它。您转义
$
,因此您的变量将不会被替换。使用ANSI-C 引用(
$'...'
) 将 直接分配0xAB
给变量。或者,更改您的报价:
或用第二个反斜杠转义反斜杠:
对于字节/字符音译,您可能希望使用 sed 的
y
命令而不是它的s
命令:或者也许更有效地使用
tr
-sed
你只需要从十六进制转换为八进制:或者