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