"trap read debug" peut-il corriger une erreur? Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
tony
Membre
Membre
Messages : 401
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

ayant eu un problème avec un script qui avait toujours fonctionné j'ai ajouté, sur les conseils du web bien sûr, 2 lignes à mon script:

Code : Tout sélectionner

set -x
trap read debug
et le script qui restait bloqué à la 3ème ligne s'est exécuté sans problème. J'ai commenté les 2 lignes miraculeuses et depuis ce script s'exécute normalement. La commande(?), à défaut de savoir la nommer, "trap read debug" peut-elle automatiquement corriger certaines erreurs? Ou est-ce l'exécution ligne après ligne qui aurait débloqué qq chose, mais quoi?

PS1: j'avais tenté la commande <script> -v mais apparemment l'exécution n'est pas bavarde. Est-il possible de suivre en direct , ligne par ligne, l'exécution du script? Ou peut-être que ce "trap read debug" devient bavard en cas de détection d'un problème?

PS2: la commande bash -v <script> ne m'apporte pas grand chose par rapport à <script>

PS3: https://bashscript.net/bash-script-debu ... echniques/
Use trap for Error Handling: The trap command is configured to catch any errors and display a custom message before exiting the script.
donc s'il y avait eu une erreur "trap" me l'aurait signalé, non? A priori mon script est correct, je m'en doutais depuis le temps qu'il fonctionne, et l'arrêt sur la 3ème ligne était dû à ?, l'exécution ligne par ligne a eu un effet bénéfique autant que miraculeux. Bon, pourquoi pas?
Debian 12/ Xfce
tony
Membre
Membre
Messages : 401
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

peut-être que la réponse est ici:
Why should I use trap?

The trap command allows you to catch errors and perform cleanup or display custom messages without letting the script exit unexpectedly.
il fait quoi exactement ce "cleanup"?
Debian 12/ Xfce
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5852
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

La commande trap capture les appels systemes. Tu peux par exemple t'en servir dans le cas d'un arret intempetif (gug ou ctrl C) pour nrttoyer les fichier temporaire (action qui se fait généralement en fin de script).
Dans ton cas, trap est appelé si tu es en mode debug.
tony
Membre
Membre
Messages : 401
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

je viens d'introduire une erreur dans un script. En mode "debug" ou non cette erreur est signalée:
  • message au moment de l'exécution de la ligne concernée dans un cas
  • une fois le script exécuté dans l'autre
Ce que je vais retenir et qui me concernera éventuellement, c'est que je peux exécuter un script ligne par ligne en ajoutant ces deux commandes au début d'un script.

merci pour la réponse.
Debian 12/ Xfce
Répondre