如何在bash中将var转换为十六进制值?

时间:2015-07-06 03:30:13

标签: bash hex

如何在bash脚本中将文本转换为十六进制?

示例:

#!/bin/bash
myvar="abc '\\ special chars, etc..."

# need $myvar in hexadecimal: 616263...

我试过了:

myvar=`printf $plaintext | xxd --p`

但不起作用,$ plaintext包含特殊字符

$plaintext='demo && evil command injected'

如何安全地将var转换为十六进制值?或者可以将缓冲区保存到这样的变量?:

printf $abc | xxd --p | def=

1 个答案:

答案 0 :(得分:1)

我之前没有使用xxdxxd -p似乎总是将普通输出分组到列中,您无法将其关闭。相反,您可以使用hexdump。它往往可以在许多Linux平台上使用。例如:

myvar=$(hexdump -ve '1/1 "%02x"' <<< 'Hello, World!')
echo $myvar

结果:

48656c6c6f2c20576f726c64210a