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...

couv_EI7PRO.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Gestion d'un processus en arrière-plan
Suivant
Script d'archivage incrémental et transfert SFTP automatique