GNU/Linux >> Tutoriels Linux >  >> Linux

Comment déboguer un script bash ?

J'ai des problèmes avec certains scripts dans bash, à propos d'erreurs et de comportements inattendus. Je voudrais rechercher les causes des problèmes afin de pouvoir appliquer les correctifs. Existe-t-il un moyen d'activer une sorte de "mode débogage" pour bash, pour obtenir plus d'informations ?

Réponse acceptée :

Démarrez votre script bash avec bash -x ./script.sh ou ajoutez dans votre script set -x pour voir la sortie de débogage.

Supplémentaire avec bash 4.1 ou version ultérieure :

Si vous souhaitez écrire la sortie de débogage dans un fichier séparé, ajoutez ceci à votre script :

exec 5> debug_output.txt
BASH_XTRACEFD="5"

Voir :https://stackoverflow.com/a/25593226/3776858

Si vous voulez voir les numéros de ligne, ajoutez ceci :

PS4='$LINENO: '

Si vous avez accès à logger commande, vous pouvez l'utiliser pour écrire la sortie de débogage via votre syslog avec l'horodatage, le nom du script et le numéro de ligne :

#!/bin/bash

exec 5> >(logger -t $0)
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x

# Place your code here

Vous pouvez utiliser l'option -p de logger commande pour définir une installation et un niveau individuels pour écrire la sortie via syslog local dans son propre fichier journal.


Linux
  1. Comment mettre en surbrillance les scripts Bash dans Vim ?

  2. Comment passer des paramètres à un script Bash ?

  3. Comment inclure un fichier dans un script shell bash

  4. Comment ajouter un travail crontab à crontab à l'aide d'un script bash ?

  5. Comment exécuter un script bash ?

Comment exécuter un script bash {7 méthodes}

Comment écrire un script bash avec des exemples

Comment exécuter un script bash

Comment vérifier la syntaxe d'un script Bash sans l'exécuter ?

Comment tuer le script python avec le script bash

Comment déboguer une tâche parvenue ?