Lancez votre script bash avec bash -x ./script.sh
ou ajoutez-le dans votre script set -x
pour voir la sortie de débogage.
Supplémentaire avec bash
4.1 ou plus tard:
Si vous voulez é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 à la
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 afin d'écrire la sortie via son syslog local dans son propre fichier journal.
BASH_XTRACEFD="5"
bash, le résultat de la trace généréset -x
est activé dans le descripteur de fichier 5.exec 5> >(logger -t $0)
redirige le résultat du descripteur de fichier 5 vers lalogger
commande.En utilisant
set -x
J'utilise toujours
set -x
etset +x
. Vous pouvez envelopper les zones que vous voulez voir ce qui se passe avec elles pour activer / désactiver la verbosité.log4bash
De même, si vous avez déjà travaillé sur le développement et connaissez le style des enregistreurs nommés log4j, log4perl, etc., vous voudrez peut-être utiliser log4bash .
extraitÀ partir de là, vous pouvez faire ce genre de chose dans vos scripts Bash:
Résultat dans ce type de sortie:
log4sh
Si vous avez besoin de quelque chose de plus portable, il y a aussi le plus vieux
log4sh
. Fonctionne commelog4bash
, disponible ici:la source
alias say="spd-say"
dans mon .bashrc, qui imite lasay
commande d'autres distributions ou OS X.Il existe un débogueur bash, bashdb , qui est un paquet installable sur de nombreuses distributions. Il utilise le mode de débogage étendu intégré de bash (
shopt -s extdebug
). Cela ressemble beaucoup à gdb; voici un exemple de session pour donner un peu de saveur:Comme dans gdb, l'instruction est affichée juste avant son exécution. Nous pouvons donc examiner les variables pour voir ce que l’instruction fera avant de le faire.
Ce n'est pas ce que nous voulons! Regardons à nouveau l'expansion des paramètres.
OK, ça marche. Réglons
newf
la valeur correcte.Cela semble bon. Continuez le script.
la source
La méthode standard pour déboguer des scripts dans la plupart des shells basés sur Bourne, comme bash, consiste à écrire
set -x
en haut de votre script. Ceci fera que bash sera plus détaillé sur ce qui est fait / exécuté et comment les arguments sont évalués.c'est utile pour l'interpréteur ou les scripts internes. Par exemple:
Dans ce qui précède, nous pouvons voir pourquoi find échoue en raison de guillemets simples.
Pour désactiver la fonctionnalité, tapez simplement
set +x
.la source
Utiliser Eclipse
Vous pouvez utiliser l'environnement combiné d'Eclipse et Shelled avec le script "_DEBUG.sh" lié ci-dessous.
http://sourceforge.net/projects/shelled/files/shelled/update/
http://sourceforge.net/projects/basheclipse/
Changer de coquille
Par défaut, l'outil de développement Shelled utilise
/bin/dash
l'interpréteur. J'ai changé cela pour/bin/bash
avoir une meilleure compatibilité avec la plupart des exemples de shell sur le Web et dans mon environnement.NOTE: Vous pouvez changer cela en allant dans: Fenêtre -> Préférences -> Script shell -> Interprètes
Instructions d'installation
Le paquet de
_DEBUG.sh
débogage a les étapes pour utiliser le script pour votre débogage de script qui est essentiellement (le fichier readme.txt):L'interface de débogage bash
Ce débogueur bash a toutes les fonctionnalités des débogueurs de programmation standard tels que:
L' environnement de développement intégré (IDE) Shelled (Shell Script Editor) présente un avantage supplémentaire, qui consiste à vérifier le contexte, à mettre en surbrillance et à mettre en retrait tout en écrivant votre script. Si le retrait n’est pas correct, vous pourrez immédiatement signaler / localement de nombreuses erreurs.
Ensuite, il y a d' autres avantages de l'IDE tels que:
la source
Une merveilleuse ressource est apparue ces dernières années: http://shellcheck.net
il vous en montre plus que le bash habituel, vous permettant de trouver facilement ces citations embarrassantes ou ces accolades, etc.
Assurez-vous simplement de ne pas coller des informations sensibles (ips, mots de passe, etc.) sur le net ... (d'autant plus qu'il s'agit de http, non cryptées) (je pense que shellcheck est également disponible au téléchargement, mais je ne suis pas sûr)
la source
simplement utiliser:
la même chose pour shell:
la source
De nos jours, il existe le débogage VS Code Bash.
https://marketplace.visualstudio.com/items?itemName=rogalmic.bash-debug
Il a «Pas à pas / plus / plus» et montre également la valeur de chaque variable.
la source