无法在变量中存储 ascii 值

无法在变量中存储 ascii 值

我正在尝试将十六进制转换为十进制到 ascii 并将其存储在变量中。我正在使用以下代码。

HEX=30
DEC=`printf "%d\n" 0x${HEX}`
echo "$DEC"
ASC=`printf \\$(printf '%03o' $DEC)`
echo "$ASC"

我收到以下错误语法错误:

`(' unexpected

我正在使用 Solaris 10 和ksh.我不想使用 ascii 函数并调用它来存储值。我希望能够在不使用函数的情况下做到这一点。

答案1

您错误地转义了$两次,导致printf看到printf \$( ...而不是(我假设您想要的)替换内部 printf 结果。为此,您可以将整个语句简化为:ASC=$(printf '%03o' $DEC)

答案2

感谢 Jeff Schaller 纠正我的语法错误。我找到了解决问题的方法,这在 Solaris 10 中有效。

script:

#!/bin/ksh
HEX=30
DEC=`printf "%d\n" 0x${HEX}`  ##Converted Hex to decimal
echo "$DEC"
OCT=$(printf '%o' $DEC)   ##Converted decimal to octal
echo "$OCT"
ASCI=$(printf \\$OCT)  ##Finally converted OCTAL to ASCII.
echo "$ASCI"

output:

48
60
0

显然,在打印为 ASCII 之前,我们必须将十进制转换为八进制。

相关内容