Não é possível armazenar o valor ascii em uma variável

1

Estou tentando converter hexadecimal em decimal para ascii e armazená-lo em uma variável. Eu estou usando o seguinte código.

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

Estou recebendo o seguinte erro de sintaxe de erro:

'(' unexpected

Estou usando o Solaris 10 e ksh . Eu não quero usar uma função para ascii e chamá-lo para armazenar o valor. Eu quero ser capaz de fazer isso sem usar uma função.

    
por ayrton_senna 24.06.2015 / 02:09

2 respostas

2

Obrigado Jeff Schaller por corrigir meu erro de sintaxe. Eu encontrei uma solução para o meu problema, isso está funcionando no 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

Aparentemente, temos que converter o decimal em octal antes de imprimir em ASCII.

    
por 24.06.2015 / 07:53
2

Você erroneamente está escapando do $ duas vezes, levando printf para ver printf \$( ... em vez de (o que eu suponho que você quer) de substituir os resultados internos do printf. Para esse fim, você poderia simplificar toda a declaração para: ASC=$(printf '%03o' $DEC)

    
por 24.06.2015 / 02:55