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) :
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 % ascii2char 48 H % ascii2char 48 | od -h 0000000 480a 0000002
Le line feed (0a) est généré par la commande "echo" elle-même,
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
mais "${CtrlA}" et "${C48}" contiennent bien juste les caractères de code 01H et 48H.
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 % echo "${CtrlA}${C48}" | od -c 0000000 001 H \n 0000003
Je pourrais même me contenter de:
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
mais, manifestement, le code n'est pas interprété comme étant de l'octal:
Code : Sélectionner tout - Visualiser dans une fenêtre à part % HH='\110'
Quelqu'un saurait-il comment je peux faire?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 % echo ${HH} | od -c 0000000 \ 1 1 0 \n 0000005
Merci d'avance
)jack(
Partager