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.