Bonjour rené (ou l&#39;ami :-)<br><br>le script marche correctement si on fait un copier-coller de ce qu&#39;il y a dans la page <a href="http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux#script">http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux#script</a> mais pas si on copie la version dans votre courriel précédent. Je suppose donc que le script a été corrigé depuis.<br>
<br>Il y a 2 raisons pourquoi le script version courriel ne marchait pas :<br>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 :<br>
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        echo &quot; Taper le numéro de l&#39;action que vous souhaitez ou CTRL-C \</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">
pour quitter ce script : &quot;</span><br><br>La même chose s&#39;applique à la ligne 26.<br><br>Deuxièmement, dans le switch case de la ligne 14 à 34, il faut mettre un &quot;)&quot; après chaque switch.<br><br><span style="font-family: courier new,monospace;">case &quot;touche1&quot; in</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    <b>1)</b></span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        #mettre code ici</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        ;;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    <b>2)</b></span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        #mettre code ici</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        ;;</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">esac</span><br><br>Après ces corrections, le script marche. <br><br>Maintenant, bien que le script (version corrigé) accomplit *correctement* sa fonction, personellement j&#39;ai des tracas à propos du style d&#39;implimentation du code : <br>
<br>le script peut vérifier si le dossier existe avec la condition &quot;if [ ! -d ~/PointDeRestauration ]&quot;,  ça évite d&#39;afficher à l&#39;écran une erreur qui pourrait mêler l&#39;utilisateur quand le dossier n&#39;existe pas.<br>
<br>Un point de restauration, (que ça soit question d&#39;en créer ou en restaurer) c&#39;est une action singulière, dans le sens que c&#39;est une action qu&#39;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&#39;action est terminé. La boucle force l&#39;utilisateur à faire une 2e intervention pour terminer une action qui devrait juste en nécéssiter une. Non seulement ça, mais c&#39;est une boucle infini et le seul moyen d&#39;en sortir c&#39;est de forcer le script de s&#39;arrêter avec CTRL-C. cette manière de coder me fait penser vaguement à l&#39;ère BASIC avec ses BREAK et ses GOTO. Il existe d&#39;autres alternatives plus &quot;propre&quot; pour accomplir le même résultat.<br>
<br>Autre commentaire : pour ce genre de script ça serait intéressant d&#39;automatiser le processus sans avoir besoin d&#39;aucune intervention humaine. Une manière possible serait de modifier le script pour prendre en compte des arguments (une recherche google sur &quot;getopts&quot; t&#39;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)<br>
<br>Sinon, il serait aussi intéressant d&#39;ajouter un message d&#39;avertissement indiquant à l&#39;utilisateur que restaurer un point de restauration peut avoir des répercussions importantes, puisque le système s&#39;apprête à installer/désintaller une multitude de paquets.<br>
<br>Voilà mes commentaires, à prendre avec un grain de sel.<br><br><div class="gmail_quote">2010/4/2 Lami René <span dir="ltr">&lt;<a href="mailto:lami@webestrie.com">lami@webestrie.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Bonjour,<br>
<br>
J&#39;ai produit le tutoriel «<br>
<a href="http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux" target="_blank">http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux</a> »<br>
et une personne à ajouté une section Script «<br>
<a href="http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux#script" target="_blank">http://doc.ubuntu-fr.org/points_de_restauration_pour_un_systeme_linux#script</a><br>
», ce que j&#39;apprécie grandement.<br>
<br>
Je ne connais pas la programmation de script et il y a un petit bogue<br>
dans le script, alors pourriez-vous m&#39;aider ?<br>
<br>
Avec bash, le message d&#39;erreur est le suivant :<br>
<br>
rene@DV9700:~/sda6$ bash ./pr.sh<br>
 : commande introuvable<br>
 »pr.sh: line 13: Erreur de syntaxe près du symbole inattendu « in<br>
&#39;/pr.sh: line 13: `         case &quot;$touche1&quot; in<br>
<br>
Avec sh, le message d&#39;erreur est le suivant :<br>
<br>
rene@DV9700:~/sda6$ sh ./pr.sh<br>
: not found clear<br>
./pr.sh: 13: Syntax error: word unexpected (expecting &quot;in&quot;)<br>
rene@DV9700:~/sda6$<br>
<br>
Le script est le suivant :<br>
<br>
#!/bin/bash<br>
clear<br>
while [ 1 -eq 1 ]<br>
   do<br>
   if ls ~/PointDeRestauration<br>
      then<br>
         echo &quot; 1) Créer un point de restauration &quot;<br>
<br>
         echo &quot; 2) Restaurer un point &quot;<br>
<br>
         echo &quot; Taper le numéro de l&#39;action que vous souhaitez ou CTRL-C<br>
pour quitter ce script : &quot;<br>
         read touche1<br>
         case &quot;$touche1&quot; in<br>
            1<br>
               jour=$(date +%d)<br>
               mois=$(date +%m)<br>
               annee=$(date +%y)<br>
               dpkg --get-selections &gt;<br>
~/PointDeRestauration/$annee$mois$jour<br>
               echo &quot; Point de restauration &quot;+<br>
~/PointDeRestauration/$annee$mois$jour +&quot; est créé avec succès !&quot;<br>
               ;;<br>
            2<br>
               ls ~/PointDeRestauration/*<br>
               echo &quot; Quelle est la date de point de restauration<br>
souhaitez-vous utiliser ? (AAMMJJ)&quot;<br>
               read touche2<br>
               sudo dpkg --clear-selections<br>
               sudo dpkg --set-selections &lt; ~/PointDeRestauration/$touche2<br>
               sudo apt-get dselect-upgrade<br>
               echo &quot; Votre système a été restauré avec succès !&quot;<br>
               ;;<br>
         esac<br>
      else<br>
         mkdir ~/PointDeRestauration<br>
      fi<br>
done<br>
<br>
Je crois comprendre qu&#39;il y a un problème avec la variable « touche1 »<br>
et le paramètre « in » de la commande « case » !<br>
<br>
Merci d&#39;avance pour tout aide !<br>
<br>
L&#39;ami René<br>
P.-S. Je suis programmeur analyste.<br>
<font color="#888888"><br>
--<br>
Ubuntu-quebec mailing list<br>
<a href="mailto:Ubuntu-quebec@lists.ubuntu.com">Ubuntu-quebec@lists.ubuntu.com</a><br>
<a href="https://lists.ubuntu.com/mailman/listinfo/ubuntu-quebec" target="_blank">https://lists.ubuntu.com/mailman/listinfo/ubuntu-quebec</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>&quot;All musicians are drug addicts, no question about it. The ecstasy we get during a concert is proof enough.<br>yet there is a slight difference between us, the musicians, and the typical &#39;street-junkie&#39;...<br>
Instead of consuming powder, we consume vibrations&quot;<br><br>Will<br>et/ou<br>Gregory Eric Sanderson Turcot Temlett MacDonnell Forbes<br>et/ou<br>Touffa!  :)<br>