Comment écrire un shell qui transforme un code ascii en caractère?
J'espère que je suis dans le bon forum car je n'ai pas trouvé de forum
dédié au shell (sh, csh ou bash).
Je voudrais écrire un shell (a priori Bourne) qui prenne en paramètre un nombre
et qui sorte sur la stdout le caractère dont le code ascii est ce nombre.
Par exemple, 48 (en hexa) == 110 (en octal) == 72 (en décimal)
est le code ascii du caractère "H" (hache majuscule).
Je voudrais écrire un shell "ascii2char" qui,
lorsqu'on lui passe en paramètre le nombre 48 (ou 110 ou 72, ça m'est égal)
écrive sur la stdout la lettre "H" (avec ou sans CR LF, ça m'est égal) :
Code:
1 2 3 4 5
| % ascii2char 48
H
% ascii2char 48 | od -h
0000000 480a
0000002 |
J'ai réussi à le faire sans paramètre, par exemple pour les codes 001 et 110 en octal:
Code:
1 2 3 4 5 6
| % CtrlA=`echo "A" | tr 'A' '\001'`
% C48=`echo "A" | tr 'A' '\110'`
% echo "${CtrlA}${C48}" | od -h
0000000 0148 0a00
0000003 |
Le line feed (0a) est généré par la commande "echo" elle-même,
mais "${CtrlA}" et "${C48}" contiennent bien juste les caractères de code 01H et 48H.
Code:
1 2 3
| % echo "${CtrlA}${C48}" | od -c
0000000 001 H \n
0000003 |
Mais, je n'arrive pas à le faire en utilisant un paramètre:
Code:
1 2 3 4 5 6 7 8 9
| % HH=110
% echo "A" | tr 'A' "${HH}" | od -c
0000000 1 \n
0000002
% echo "A" | tr 'A' "\${HH}" | od -c
0000000 $ \n
0000002 |
Je pourrais même me contenter de:
mais, manifestement, le code n'est pas interprété comme étant de l'octal:
Code:
1 2 3
| % echo ${HH} | od -c
0000000 \ 1 1 0 \n
0000005 |
Quelqu'un saurait-il comment je peux faire?
Merci d'avance
)jack(