변수에 ASCII 값을 저장할 수 없습니다.

변수에 ASCII 값을 저장할 수 없습니다.

16진수를 10진수로 변환하여 ASCII로 변환하고 변수에 저장하려고 합니다. 다음 코드를 사용하고 있습니다.

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

다음과 같은 오류 구문 오류가 발생합니다.

`(' unexpected

저는 Solaris 10을 사용하고 있으며 kshASCII 함수를 사용하여 값을 저장하고 싶지 않습니다. 함수를 사용하지 않고도 이 작업을 수행할 수 있기를 원합니다.

답변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로 인쇄하기 전에 10진수를 8진수로 변환해야 합니다.

관련 정보