Bonjour Philippe,

Encore une fois, ta contribution est d'une qualité inestimable et grandement appréciée !

Maintenant, tout fonctionne à merveille ! Bravo !

En pièce jointe, ma version finale, testée avec tous les cas de figure possibles.

Puis-je ajouter ton nom ou ton pseudonyme à la liste des contributeurs dans la page du Wiki ou préfères-tu le faire par toi-même ?

Si c'est oui pour le pseudonyme, que souhaites-tu comme pseudonyme ?

Mes autres commentaires dans le texte...

Philippe Gauthier a écrit :
Bonjour!

Je vais couper un peu dans les citations pour pas trop alourdir...

Le jeudi 15 avril 2010 à 20:29 -0400, Lami René a écrit :
  mkdir -p ~/PointDeRestauration
OK, si je comprends bien, que le dossier existe ou pas on demande sa création et cela ne cause aucun problème, mais cela rend la structure du script plus simple ! Est-ce une bonne interprétation de ton propos ?
Exactement. Chaque outil a une "job" et la "job" de mkdir c'est de créer
un répertoire. Le "-p" vient seulement lui demander de ne pas paniquer
si le répertoire n'existe pas, ou de créer plusieurs répertoires
imbriqués si nécessaire.
Merci pour le détail du "-p", c'est toujours apprécié. !
Est-ce que le « done » fait partie de la boucle du « case » ?
Le "done" était la contrepartie de "while []; do".
OK, merci !
Si la formation et la certification sont disponibles à Sherbrooke en français, ça pourrait m'intéresser !

S'il y a quelque chose en français, pourrais-tu me fournir des coordonnées ?
Voici ma dernière version du script en y incorporant, je crois, toutes tes suggestions :

#!/bin/bash
nomDossier="~/PointDeRestauration/"
Pour des raisons que j'ignore, il faut enlever les guillemets pour que
ça fonctionne correctement. Sinon, cela va créer un répertoire qui se
nomme "~" !?!

nomDossier=~/PointDeRestauration/
Je prends bonne note !
clear
mkdir -p $nomDossier
echo ""
echo " 1) Créer un point de restauration. "
echo ""
echo " 2) Restaurer un point. "
echo ""
echo " 3) Quitter. "
echo ""
echo " Taper le numéro de l'action que vous souhaitez ou CTRL-C pour quitter ce script : "
echo ""
read touche1
   case "$touche1" in
   1)
     point=$(date +%F)
     if dpkg --get-selections > $nomDossier + "/" + $point; then
En shell, les chaînes de caractère sont formées sans opérateurs. On peut
écrire directement:

      if dpkg --get-selections > $nomDossier/$point; then
Je prends bonne note !
       echo "Le point de restauration « $point » a est créé avec succès !"
     else
       echo "La création du point de restauration a échoué !"
     fi
     ;;
  2)
    echo "Quel point de restauration souhaitez-vous utiliser ?"
    echo
    cd $nomDossier
    ls
    read point
    if [ -f $nomDossier + "/" + $point ]; then
Même chose:

     if [ -f $nomDossier/$point ]; then
      sudo dpkg --clear-selections
      if sudo dpkg --set-selections < $nomDossier + "/" + $point; then
Même chose encore :

       if sudo dpkg --set-selections < $nomDossier/$point; then
echo "Votre système a été restauré au point « $point » avec succès !"
      else
        echo "La restauration a échoué !"
      fi
    else
echo "Le fichier pour la date de restauration « $point » n'est pas disponible !"
    fi
    ;;
      3)
         break
         ;;
Il manque le "esac" qui ferme le "case" :

    esac
Je note aussi, pour le « case », c'est « esac » !
   done
Si il n'y a plus de "while []; do", on n'a plus besoin du done. Aussi,
l'option 3 n'a plus vraiment de sens si il n'y a plus de boucle.
Je trouve plus élégant de le garder, comme ça toutes les options sont dans la liste !

Est-ce que tu as une objection ?
J'y ai probablement glissé des erreurs, je fais de mon mieux. Aurais-tu l'amabilité de le réviser et de me faire te recommandations !
Ça a l'air de fonctionner !
Pour l'instant, avec la commande « chmod +w PointDeRestauration.sh », suivi de « ./PointDeRestauration.sh », j'ai le message d'erreur suivant :

bash: ./PointDeRestauration.sh: Permission non accordée
C'était un piège ;) Non vraiment, je me suis trompé lorsque j'ai réécrit
la commande. Le "+w" sert vraiment pour ajouter la permission en
écriture. Le mode correct serait plutôt "+x". Désolé...
Je n'ai pas bien fait mes devoirs, car tu l'avais précisé, « le mode "exécutable" (x) » ! ;-(
Avec la commande « chmod +w PointDeRestauration.sh », suivi de « sh ./PointDeRestauration.sh », avec ce nouveau script, comme avec l'ancien, J'ai toujours le même message d'erreur avec la rencontre des « in » dans le script :

 : bad variable name
./PointDeRestauration.sh: 15: Syntax error: word unexpected (expecting "in")

Avec la commande « chmod +w PointDeRestauration.sh », suivi de « bash ./PointDeRestauration.sh », j'ai le résultat suivant : : commande introuvableh: line 3: clear 1) Créer un point de restauration.

 2) Restaurer un point.

 3) Quitter.

Taper le numéro de l'action que vous souhaitez ou CTRL-C pour quitter ce script :

1
 » : identifiant non valablene 14: read: « touche1
»PointDeRestauration.sh: line 15: Erreur de syntaxe près du symbole inattendu « in
'/PointDeRestauration.sh: line 15: `   case "$touche1" in
Hmmm... je ne sais pas pourquoi. Ça semble marcher pour moi. Est-ce que
toutes les lignes ont été bien recopiées ? Le script que j'utilise est
attaché à ce message.
Oui, le problème venait du « w » au lieu du « X » dans la commande « chmod ».
Pourquoi les résultats sont différents entre l'utilisation de « sh ./... » et « bash ./... » ?
Sur Ubuntu, "sh" pointe sur /bin/dash, qui différent de bash. Je crois
que "dash" implémente les fonctionnalités écrites dans des standards,
tandis que "bash" ajoute plusieurs extensions et fonctionnalités bien au
delà des standards.
Maintenant que je connais davantage la commande « chmod », je ne devrais plus avoir recours au « sh » ou au « bash » dans la console.

Si je m'inscris à une formation pour le LPIC-1, je veux que tu sois mon professeur ! ;-)

Si tu as besoin d'une lettre de référence, je suis disponible, tes explications sont simples précises et détaillées ! Tu es doué pour ce domaine !

Un super merci à toi !

L'ami René

Attachment: PointDeRestauration.sh
Description: Bourne shell script

-- 
Ubuntu-quebec mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-quebec

Répondre à