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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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(