IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Boucle while inifinie


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Par défaut Boucle while inifinie
    bonjour,

    j'élabore actuellement un petit script bash pour sauvegarder un fichier texte dans un dossier avec comme nom un certains nombre de paramètre définis par la réponse d'une question...

    Enfin bon bref voila le code que j'avais fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
        1 DATE=$(date +%Y%m%d)
        2 
        3 echo -n  "Nom d'utilisateur ? (re/ro) "
        4 read pseudo
        5 
        6 while [ "$pseudo" != "re" ] || [ "$pseudo" != "ro" ]
        7 do
        8     echo
        9     echo "Merci d'entrer soit \"re\" soit \"ro\""
       10     echo
       11     echo -n "Nom d'utilisateur ?"
       12     read pseudo
       13 done
       14 
       15 if [ "$pseudo" == "ro" ];
       16     then{
       17         cp /root/log/last.txt /root/log/history/last_fotoxe33_${DATE}.txt
       18     }
       19     elif [ "$pseudo" == "re" ];
       20         then{
       21             cp /root/log/last.txt /root/log/history/last_sylphis_${DATE}.txt
       22         }
       23 fi
       24 
       25 if [ -f /root/log/history/last_${pseudo}_${DATE}.txt ];
       26         then{
       27                 echo Sauvegarde Ok
       28         }
       29         else{
       30                 echo Erreur lors de la creation du fichier de sauvegarde
       31         }
       32 fi
    Puis que j'ai modifier pour le problème de la variable pseudo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
        1 DATE=$(date +%Y%m%d)
        2 
        3 echo -n  "Nom d'utilisateur ? (re/ro) "
        4 read pseudo
        5 
        6 while [ "$pseudo" != "re" ] || [ "$pseudo" != "ro" ] || [ "$pseudo2" != "re" ] || [ "$pseudo2" != "ro" ]
        7 do
        8     echo
        9     echo "Merci d'entrer soit \"re\" soit \"ro\""
       10     echo
       11     echo -n "Nom d'utilisateur ?"
       12     read pseudo2
       13 done
       14 
       15 if [ "$pseudo" == "ro" ] || [ "$pseudo2" == "ro" ];
       16     then{
       17         cp /root/log/last.txt /root/log/history/last_fotoxe33_${DATE}.txt
       18     }
       19     elif [ "$pseudo" == "re" ] || [ "$pseudo2" == "re" ];
       20         then{
       21             cp /root/log/last.txt /root/log/history/last_sylphis_${DATE}.txt
       22         }
       23 fi
       24 
       25 if [ -f /root/log/history/last_${pseudo}_${DATE}.txt ];
       26         then{
       27                 echo Sauvegarde Ok
       28         }
       29         else{
       30                 echo Erreur lors de la creation du fichier de sauvegarde
       31         }
       32 fi
    Mais la boucle while tourne en boucle (c'est le cas de le dire) mais je ne vois pas pourquoi ! (je suis débutant en bash merci d'être indulgent)

    voila, merci d'avance pour votre aide...

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #!/bin/bash
    #set -x
     
    DATE=$(date +%Y%m%d)
    GetBack() {
       tput cuu 2
       tput el
    }
    QuiS() {
       read -p ' Nom d'\''utilisateur (re|ro) : ' pseudo
     
       case $pseudo in
          re) echo "cp /root/log/last.txt /root/log/history/last_sylphis_${DATE}.txt"
          ;;
          ro) echo "cp /root/log/last.txt /root/log/history/last_fotoxe33_${DATE}.txt"
          ;;
          *) echo "Merci d'entrer soit \"re\" soit \"ro\""
             GetBack
             QuiS
          ;;
       esac
    }
     
    QuiS
     
    if [ -f /root/log/history/last_${pseudo}_${DATE}.txt ]
     then
       GetBack
       echo Sauvegarde Ok
       tput el
     else
       GetBack
       echo Erreur lors de la creation du fichier de sauvegarde
       tput el
    fi
    Y a peut-être plus simple...
    ?

    c'est soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ ... ]
     then
       ...
     else
       ...
    fi
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [ ... ] && {
       ...
    } || {
       ...
    }
    pas les deux.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #!/bin/bash
    #set -x
     
    DATE=$(date +%Y%m%d)
    GetBack() {
       tput cuu 2
       tput el
    }
    QuiS() {
       read -p ' Nom d'\''utilisateur (re|ro) : ' pseudo
     
       case $pseudo in
          re) echo "cp /root/log/last.txt /root/log/history/last_sylphis_${DATE}.txt"
          ;;
          ro) echo "cp /root/log/last.txt /root/log/history/last_fotoxe33_${DATE}.txt"
          ;;
          *) echo "Merci d'entrer soit \"re\" soit \"ro\""
             GetBack
             QuiS
          ;;
       esac
    }
     
    QuiS
     
    if [ -f /root/log/history/last_${pseudo}_${DATE}.txt ]
     then
       GetBack
       echo Sauvegarde Ok
       tput el
     else
       GetBack
       echo Erreur lors de la creation du fichier de sauvegarde
       tput el
    fi
    Y a peut-être plus simple...
    ?
    Oo Oula, moi pas être a ce niveau :p

    Mais merci quand même je vais utiliser ça :p

    Citation Envoyé par N_BaH Voir le message
    c'est soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ ... ]
     then
       ...
     else
       ...
    fi
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [ ... ] && {
       ...
    } || {
       ...
    }
    pas les deux.
    Ab ? Autant pour moi alors

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Par défaut
    Le script que tu m'as passé ne fonctionne pas

    J'ai du mal le copier, en tout cas, sa m'affiche "Erreur lors de la creation du fichier de sauvegarde" et effectivement, rien dans mon dossier log/history

    Une idée ?

    Voila texto ce que j'ai recopié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
        1 #!/bin/bash
        2 #set -x
        3 
        4 DATE=$(date +%Y%m%d)
        5 
        6 GetBack() {
        7        tput cuu 2
        8           tput el
        9       }   
       10       QuiS() {
       11              read -p ' Nom d'\''utilisateur (re/ro) : ' pseudo
       12              
       13                 case $pseudo in
       14                           re) echo "cp /root/log/last.txt /root/log/history/last_sylphis_${DATE}.txt"
       15                           ;;
       16                           ro) echo "cp /root/log/last.txt /root/log/history/last_fotoxe33_${DATE}.txt"
       17                           ;;
       18                           *) echo "Merci d'entrer soit \"re\" soit \"ro\""
       19                              GetBack
       20                              QuiS
       21                           ;; 
       22                 esac      
       23         }       
       24         
       25         QuiS
       26          if [ -f /root/log/history/last_${pseudo}_${DATE}.txt ]
       27          then 
       28              GetBack
       29              echo Sauvegarde Ok
       30              tput el
       31          else
       32              GetBack
       33              echo Erreur lors de la creation du fichier de sauvegarde
       34              tput el
       35          fi

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 683
    Par défaut
    oops, j'ai oublié de retirer les echo devant cp pour ne pas exécuter la copie sur ma machine.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Par défaut
    A oui en effet xD quel boulet que je le voye pas :p

    Merci en tout cas

    il reste un dernier problème... Le fichier se copie parfaitement bien, mais ça m'affiche quand même "Erreur lors de la creation du fichier de sauvegarde" !

    D'où vient le pb ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle while trop lente
    Par atouze dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 16h35
  2. Boucle while & read
    Par gibet_b dans le forum Linux
    Réponses: 4
    Dernier message: 29/04/2005, 15h38
  3. boucle while et post incrémentation
    Par tut dans le forum C++
    Réponses: 7
    Dernier message: 10/12/2004, 17h24
  4. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51
  5. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo