Compatibilité d’un script entre bash et ksh Compatibilité:entre bash et ksh
Cette section traite de la manière d’écrire un script pour qu’il soit compatible avec les shells bash et ksh.
1. Récupérer le nom du shell interpréteur du script
Nous allons avoir besoin de tester si le script est en cours d’interprétation par le bash ou le ksh. Voici l’instruction qui permet de faire ce test :
$$ représente le PID du shell courant, tail permet de récupérer la dernière ligne du résultat, et awk permet de récupérer le dernier champ de la ligne (cf. chapitre Le langage de programmation awk).
$ shell=$( ps -p $$ | tail -1 | awk '{ print $NF}' )
$ echo $shell
bash
$
Nous listons ci-après deux incompatibilités classiques entre ksh et bash et nous finirons par la manière d’écrire un script unique grâce au nom du shell que nous venons de récupérer ci-dessus.
2. Gestion des séquences d’échappement avec echo
Dans le comportement par défaut du bash, l’option -e est indispensable pour que les séquences d’échappement soient interprétées. En ksh, aucune option n’est nécessaire.
Exemple en ksh
$ echo " a\nb"
a
b
$
Exemple en bash
$ echo -e " a\nb"
a
b
$
Pour éviter d’avoir...