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 :

[bash] message d'attente


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut [bash] message d'attente
    Bonjour,

    Je suis entrain de créer un script et j'aurais voulu y ajouter un message d'attente progressif du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    attente.
    attente..
    attente...
    attente....
    attente....[OK]
    mais le tout sur la même ligne. Est-ce possible ? Si oui, comment puis-je le faire ?

    Merci d'avance !!!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour Badaboumpanpan,

    utilise l'option -n de echo
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    utilise l'option -n de echo
    Merci N_BaH, j'ai tout sur une seule ligne.

    Par contre, j'avais pas préciser que le echo remplace le précédent

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Je ne suis pas aller plus loin, car je ne sais pas ce que tu attends...

    Tu peux nous montrer ton code ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut
    En gros, j'ai une boucle for qui va chercher des infos et les mets dans un fichier text.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in 1 2 3
    do
      command
      echo -n "etape $n : OK"
    done
    Mais je voudrais faire que le echo remplace le précédent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto@becane $ ./script.sh
    etape 1 : OK
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto@becane $ ./script.sh
    etape 2 : OK
    et ainsi de suite, sur la même ligne. Un peu comme quand on fait un wget avec les "===>"

    Tu vois le truc ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Par défaut
    Salut, un \r répondrait à ta question ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    s="."
    for i in 1 2 3 4 5
    do
       echo -ne "$s\r"
       s=${s}.
    done
    echo $s
    Syntaxe à vérifier, mais ça doit être quelque chose comme ça.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Citation Envoyé par Badaboumpanpan Voir le message
    et ainsi de suite, sur la même ligne. Un peu comme quand on fait un wget avec les "===>"

    Tu vois le truc ?
    C'est une barre de progression qu'il te faut. Un peu tordu mais ceci devrait te mettre sur la voie:
    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
    #!/bin/sh
     
    progress() {
      printf "Attente."
      while : ;do
        printf "."
        sleep 1
      done
    }
     
    progress & PROGR_PID=$!
     
    # simulation d'une tâche qui prend du temps:
    sleep 10
    echo ""
     
    # on tue la progress bar
    kill $PROGR_PID
    Mais attention: si ta tâche est interrompue par une erreur tu auras toujours le script actif et arrière plan. Faudra gérer les sortie d'erreurs pour tuer le PID de la barre d'attente.

  8. #8
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut
    Citation Envoyé par BSans Voir le message
    Salut, un \r répondrait à ta question ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    s="."
    for i in 1 2 3 4 5
    do
       echo -ne "$s\r"
       s=${s}.
    done
    echo $s
    Syntaxe à vérifier, mais ça doit être quelque chose comme ça.
    Super !! C'est exactement ça !!! Merci !!!

  9. #9
    Nouveau candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Par défaut butterfly1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    s="."
    for i in 1 2 3 4 5
    do
       echo -ne "$s\r"
       s=${s}.
    done
    echo $s
    Parfait mais je ne sais s'il voudrait voir la progression de l'affichage, alors juste améliorer le code en ajoutant la commande "sleep" comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    s="."
    for i in 1 2 3 4 5
    do
       sleep 1s
       echo -ne "$s\r"
       s=${s}.
    done
    echo $s
    cool! non ?

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Par défaut
    Ci-dessous, un bout de code en ksh permettant d'afficher l'étape en cours (de 1 à 5) ainsi que sa progression (de . à .....), le tout sur la même ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/ksh
    for i in 1 2 3 4 5
    do
      echo "\r                  \c"
      echo "\rEtape $i :\c"
      for i in 1 2 3 4 5
      do
        echo ".\c"
        sleep 1
      done
      echo "[OK]\c\r"
      sleep 1
    done
    echo
    .

Discussions similaires

  1. Afficher un message d'attente en SQL Server
    Par bong03 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/05/2006, 09h43
  2. effacer un message d'attente
    Par ProgElecT dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/03/2006, 10h18
  3. Réponses: 8
    Dernier message: 25/11/2005, 18h38
  4. Message d'attente pendant pilotage Ole Excel
    Par yottatiger dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/09/2005, 09h14
  5. [IdTCP] Comment tester l'existence de messages en attente ?
    Par HopeLeaves dans le forum Web & réseau
    Réponses: 1
    Dernier message: 29/06/2005, 10h03

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