在bash中将数据作为字节发送到管道

时间:2012-06-20 21:09:57

标签: linux bash

我最近花了一些时间尝试使用bash将一些数字作为字节写入管道(例如10作为0xA,而不是0x310x30)。不幸的是我无法这样做,不得不将脚本重写为Python。是否可以在bash脚本中以字节形式发送数据而不是字符?

2 个答案:

答案 0 :(得分:2)

正如chepner所说,你可以输出任何值,例如:$'\ 012'。所以,一个简短的脚本:

convert() {
    printf \\$(printf '%03o' $1)
}
convert 122 | od -bc

正确的打印将十进制参数转换为八进制数,第二个打印将打印如上所述的八进制数...十进制65将转换为字节'A'。

答案 1 :(得分:1)

您可以使用bash语法在$'...'中指定任意字符。 $'\012' $'\x0a'将是十进制值10的字节,分别为八进制和十六进制。请参阅QUOTING下的bash手册页。