Gestion des erreurs dans le shell unix ksh

Quelqu’un peut-il guider vers un document ou expliquer sur le ci-dessous

  • comment utiliser la gestion des erreurs dans ksh.
  • Comment fonctionne Unix sur les erreurs non gérées (comme une erreur est survenue dans l’indice, etc.).

De la page de manuel de ksh .

Erreurs non gérées

Les erreurs détectées par le shell, telles que les erreurs de syntaxe, obligent le shell à renvoyer un état de sortie non nul . Si le shell est utilisé de manière non interactive , alors l’ exécution du fichier shell est abandonnée SAUF si l’erreur se produit dans un sousshell, auquel cas le sousshell est abandonné .

La gestion des erreurs

Vérifiez les codes de sortie / retour pour gérer les erreurs:

 if [ $exit_code != 0 ]; then # Your error handler fi 

Exemple

 test_handler() { ls file_not_present if [ $? -eq 2 ]; then echo "Handler for No such file or directory" elif [ $? -ne 0]; then echo "Handler for any other exception" else echo "Succesful execution" fi } 

Jettera :

 ls: cannot access non_file: No such file or directory Handler for No such file or directory 

Mais si la commande ne se ferme pas:

 test_handler() { l file_not_present if [ $? -eq 2 ]; then echo "Handler for No such file or directory" elif [ $? -ne 0 ]; then echo "Handler for any other exception" else echo "Succesful execution" fi } 

Le résultat sera:

 l: not found [No such file or directory] Handler for any other exception 

Le shell renvoie le statut de sortie de la dernière commande exécutée (voir aussi la commande exit ci-dessus). Les erreurs d’exécution détectées par le shell sont signalées en imprimant le nom de la commande ou de la fonction et la condition d’erreur. Si le numéro de ligne sur lequel l’erreur s’est produite est supérieur à un, le numéro de ligne est également imprimé entre crochets ([]) après le nom de la commande ou de la fonction.