[Ubuntu-QC] Aide pour déboguer un petit script.sh

Lami René lami at webestrie.com
Sam 10 Avr 15:51:53 BST 2010


Bonjour Gregory Éric,

Gregory Éric Sanderson a écrit :
> Bonjour rené (ou l'ami :-)
>
> le script marche correctement si on fait un copier-coller de ce qu'il 
> y a dans la page 
> http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux#script 
> mais pas si on copie la version dans votre courriel précédent. Je 
> suppose donc que le script a été corrigé depuis.
J'ai toujours fait les copies en utilisant la page Web, pas le contenu 
du courriel. Merci de souligner le possible problème ! Il y en a eu des 
changements au script à plusieurs reprises.
>
> Il y a 2 raisons pourquoi le script version courriel ne marchait pas :
> Premièrement, à la ligne 11, pour séparer une string sur plusieurs 
> ligne il faut mettre un backslash ( \ ) à la fin de la ligne, sinon 
> bash interprète les lignes comme 2 commandes différentes. Donc, soit 
> on met la string sur une seul ligne, ou on la sépare de même :
>
>         echo " Taper le numéro de l'action que vous souhaitez ou CTRL-C \
> pour quitter ce script : "
>
> La même chose s'applique à la ligne 26.
>
> Deuxièmement, dans le switch case de la ligne 14 à 34, il faut mettre 
> un ")" après chaque switch.
>
> case "touche1" in
>     *1)*
>         #mettre code ici
>         ;;
>     *2)*
>         #mettre code ici
>         ;;
> esac
Donc, je n'ai pas eu ce problème, car je n'ai jamais eu de « string » 
sur plusieurs lignes ! Merci !
>
> Après ces corrections, le script marche.
>
> Maintenant, bien que le script (version corrigé) accomplit 
> *correctement* sa fonction, personellement j'ai des tracas à propos du 
> style d'implimentation du code :
>
> le script peut vérifier si le dossier existe avec la condition "if [ ! 
> -d ~/PointDeRestauration ]",  ça évite d'afficher à l'écran une erreur 
> qui pourrait mêler l'utilisateur quand le dossier n'existe pas.
>
> Un point de restauration, (que ça soit question d'en créer ou en 
> restaurer) c'est une action singulière, dans le sens que c'est une 
> action qu'on va accomplir sur une base occasionnelle et qui ne 
> nécessite pas plusieurs interventions utilisateur (du moins, dans ce 
> cas ci). Alors, on ne devrait pas avoir besoin de mettre une boucle 
> qui vient demander à nouveau quoi faire une fois que l'action est 
> terminé. La boucle force l'utilisateur à faire une 2e intervention 
> pour terminer une action qui devrait juste en nécéssiter une. Non 
> seulement ça, mais c'est une boucle infini et le seul moyen d'en 
> sortir c'est de forcer le script de s'arrêter avec CTRL-C. cette 
> manière de coder me fait penser vaguement à l'ère BASIC avec ses BREAK 
> et ses GOTO. Il existe d'autres alternatives plus "propre" pour 
> accomplir le même résultat.
Pour la sortie de boucle, J'ai ajouté ceci :

...
         echo " 3) Quitter "
...
            3)
               break
               ;;
...

Est-ce que la commande break est correcte et termine le script ou 
seulement le Case ou le while ?

Pour ce qui est de la boucle infinie, je suis d'accord avec toi ! Comme 
je ne connais pas les scripts (rappelez-vous que de mémoire, c'est mon 
premier script), est-ce que tu pourrais le modifier pour moi en 
respectant l'indentation du script ? Merci d'avance si tu acceptes !
> Autre commentaire : pour ce genre de script ça serait intéressant 
> d'automatiser le processus sans avoir besoin d'aucune intervention 
> humaine. Une manière possible serait de modifier le script pour 
> prendre en compte des arguments (une recherche google sur "getopts" 
> t'en dira plus). Comme ça, on peut configurer le système pour éxécuter 
> le script sur une base régulière.  (par exemple : à tous les premier 
> lundi du mois)
Je trouve ton idée très bonne. Comme je ne suis pas connaissent avec les 
scripts bash, je préférerais que tu ajoutes une section au tutoriel (au 
lieu de changer l'existante) et y ajoute ce que tu trouveras approprié !
>
> Sinon, il serait aussi intéressant d'ajouter un message 
> d'avertissement indiquant à l'utilisateur que restaurer un point de 
> restauration peut avoir des répercussions importantes, puisque le 
> système s'apprête à installer/désintaller une multitude de paquets.
J'apprécie tous tes commentaires. Pourrais-tu m'écrire le message 
d'avertissement exact que tu souhaiterais que j'ajoute au lancement du 
script ?
>
> Voilà mes commentaires, à prendre avec un grain de sel.
>
> 2010/4/2 Lami René <lami at webestrie.com <mailto:lami at webestrie.com>>
>
>     Bonjour,
>
>     J'ai produit le tutoriel «
>     http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux
>     »
>     et une personne à ajouté une section Script «
>     http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux#script
>     », ce que j'apprécie grandement.
>     ...
>
L'ami René
P.-S. Plusieurs courriels ont été classés par GMail dans les 
indésirables et c'est la cause de mon retard à y répondre ! Je me 
demande si GMail n'aurait pas changé ses règles d'identification des 
pourriels ?




Plus d'informations sur la liste de diffusion Ubuntu-quebec