最近我花了一些时间尝试使用bash将数字以字节形式写入管道(例如将10表示为0xA
,而不是0x310x30
)。不幸的是,我无法实现这样做,不得不将脚本改写成Python。在bash脚本中有没有办法将数据发送为字节而不是字符?
convert() {
printf \\$(printf '%03o' $1)
}
convert 122 | od -bc
正确的打印方式将把十进制参数转换为八进制数,第二个打印语句将按照上述方式打印八进制数...例如,十进制65将被转换为字节'A'。
$'...'
语法在bash
中指定任意字符。其中$'\012'
和$'\x0a'
分别代表十进制值为10的八进制和十六进制字节。请参阅bash
手册中有关引用的部分。testVar
变量中的内容怎么办?我尝试使用$'...'
语法,但没有成功。 - Adam Sznajder
hexdump
感兴趣,它作为Bash 4.2的示例脚本分发。 - Dennis Williamson