如何在 /bin/sh -c '...' 内打印十六进制或十进制的 ascii 字符?

如何在 /bin/sh -c '...' 内打印十六进制或十进制的 ascii 字符?

/bin/sh 将是破折号 printf 在破折号中使用十六进制或 dex 代码显示某些 ascii 字符的正确语法是什么?假设我想打印一个美元符号($)。应该使用哪种十六进制或十进制代码以及如何使用?

答案1

如果您想从字符代码转到字符本身,请将字符代码包含在printf格式字符串中,并用反斜杠转义,八进制

例如printf "\044\n"打印$(和换行符)。

在 Bash 和其他 shell 中,您可以使用十六进制,\x24但这不是标准的,并且在 Dash 中不起作用。

不过,您可以printf在命令替换中嵌套另一个命令,以从十六进制或十进制转换为八进制。这两个都会打印$(和换行符):

printf "\\$(printf %o 36)\n"
printf "\\$(printf %o 0x24)\n"

相关内容