Soit le script MyScript.sh :
#!/bin/sh touch unFichier if [ -f ./unFichier ]; then rm ./unFichier fi
Si on l'exécute ainsi :
# /bin/bash -v -x ./MyScript.sh
On va avoir une sortie comme ça :
#!/bin/sh touch unFichier + touch unFichier if [ -f ./unFichier ]; then rm ./unFichier fi + '['-f ./unFichier ']' + rm ./unFichier
Les lignes normales sont les lignes et blocs lus, tandis que celles avec un + devant sont celles exécutées.
# gruiiikkk
Posté par woof . Évalué à 1.
# Autre forme d'appel pour le debug
Posté par Alain Degreffe . Évalué à 1.
set -xv
Donc par exemple:
#!/bin/bash
set -xv
touch unFichier
if [ -f ./unFichier ]; then
rm ./unFichier
fi
[^] # Re: Autre forme d'appel pour le debug
Posté par LupusMic (site web personnel, Mastodon) . Évalué à 1.
#!/bin/bash -xv
#Pourquoi faire simple ? :)
[^] # Re: Autre forme d'appel pour le debug
Posté par GCN (site web personnel) . Évalué à 1.
Ca revient au même mais ça évite d'éditer le script pour activer/désactiver le debugging sans arrêt.
[^] # Re: Autre forme d'appel pour le debug
Posté par Damien Pinauldt . Évalué à 1.
[^] # Re: Autre forme d'appel pour le debug
Posté par LupusMic (site web personnel, Mastodon) . Évalué à 1.
echo 'alias debugsh=\'bash -xv\'' >> .bashrc
[^] # Re: Autre forme d'appel pour le debug
Posté par sparky . Évalué à 1.
# Re: debug de scripts bash
Posté par PLuG . Évalué à 2.
hypothese: vous ecrivez un script qui doit renomer/deplacer/effacer des fichiers, bref qui est dangereux pour les datas si ca se passe mal.
mon idée: remplacez les appels a "rm" "mv" "cp" ... en placant un "echo" devant.
ca donne: monscript.sh
#!/bin/bash
ls | while read FILE
do
if ......
then
echo "rm $FILE"
fi
done
vous le lancez tel quel, tous les "rm /tmp/pipo/..." s'affiichent a l'ecran pour visualisation et si c'est bien ce qui était souhaité, vous relancez le script en
pipant la sortie dans un shell:
./monscript.sh | /bin/sh
chez moi ca evite pas mal de problemes liées aux fotes de phrapes ;-)
[^] # Re: debug de scripts bash
Posté par yoho (site web personnel) . Évalué à 1.
[^] # Re: debug de scripts bash
Posté par PLuG . Évalué à 1.
en clair, au premier lancement tu te retrouve avec
#/tmp/monshell.sh
rm /tmp/pipo1
rm /tmp/pipo2
mv /tmp/pipo1.gif /tmp/pipo3.txt
si ca te plait , tu le lance en demandant d'effectuer les operations avec un pipe comme ca:
#/tmp/monshell.sh | /bin/sh
capté ?
[^] # Re: debug de scripts bash
Posté par Jonathan ILIAS-PILLET (site web personnel) . Évalué à 1.
Pour ce que tu présentes, il s'agit plutot d'une technique de programmation. Au passage, bien qu'assez pratique, cette technique est discutable, surtout si on cherche à la généraliser. En effet, plus une technique de déboggage est intrusive mois elle est bonne...
De ce point de vue, celle que tu présentes est à éviter lorsqu'on peut se débrouiller autrement. Tout dépend bien s^ur de ce que l'on souhaite faire, mais c'est une mauvaise idée de la généraliser.
[^] # Re: debug de scripts bash
Posté par sparky . Évalué à 1.
La technique est excellente. Tu vérifies les commandes qui vont être executés et quand tu es sûr de toi, tu execute grace au pipe
[^] # Re: debug de scripts bash
Posté par ben64 . Évalué à 1.
[^] # Re: debug de scripts bash
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 1.
cela n'est pas [plus] vrai avec la version 2.05b de bash
[^] # Re: debug de scripts bash
Posté par Sixel . Évalué à 1.
Je mets ca dans un coin de ma mémoire, ca resservira surement!
"Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).
[^] # Re: debug de scripts bash
Posté par Vincent Danjean . Évalué à 1.
# débuggage partiel
Posté par Nicolas Dumoulin (site web personnel) . Évalué à 1.
Pour ça, il y a la commande set, exemple :
#!/bin/sh
# [ BLABLA 100 lignes de la mort qui tuent mais qui marchent nickel ]
# partie sensible :
set -x; set -v
touch unFichier
if [ -f ./unFichier ]; then
rm ./unFichier
fi
set +x; set+v
# [ RE BLABLA ... ]
exit 0;
P.S. : c'est quoi les tags pour faire des boites de code ? Et c'est quoi les autres tags tiens tant qu'on y est
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.