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 :

question sur script, fonction while


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2009
    Messages : 66
    Par défaut question sur script, fonction while
    Bonjour,

    Ci-dessous une partie de mon script sur lequel j'ai un doute.
    Ma fonction while est sensé bouclé sur la recherche du process */hcl tant qu'elle est vrai et ceci pendant au max 24 sec (timeout).
    Est ce que cela vous semble correct comme ecriture?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    time=0
    while ( [ "ps -ef | grep -v grep | grep /appli/hermes/bin/hcl" = "0" ] )
    do
            echo ".\c"
            sleep 1
            (( time = $time +1))
            if [[ $time = $timeout ]]
            then
                    echo "impossible de continuer la maintenance du a l'activite"
                    exit1
            fi
    done
    echo "pas de transfert en cours ok"
    Merci d'avance pour vos réponses.

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

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

    while n'est pas une fonction, mais une commande composée.
    si tu veux exécuter un ensemble de commande tant qu'une commande renvoie vrai, par exemple fait ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while /bin/true >/dev/null 2>&1
    do echo blah
       sleep 5
    done
    tu peux remplacer /bin/true par n'importe quelle commande, si son code de retour vaut zéro (vrai) la boucle s'exécutera.
    Regarde sur ton système si l'une des commandes pidof, ou pgrep est disponble, ce sera plus propre que ps | grep -v | grep
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <s>echo ".\c"</s>
    echo -n '.'
    comment tester un décompte :
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    timeout=4
    if (( timeout - ++time )); then echo ok; else echo KO; fi
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2009
    Messages : 66
    Par défaut
    Bonjour N_BaH,

    Donc ma commande pourrait etre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    timeout=4
    while ps -ef | grep -v grep | grep /appli/hermes/bin/hcl >/dev/null 2>&1
    do
    echo bla bla
    if (( $timeout - ++time ));
    then
    echo ok;
    else echo KO;
    fi
    done
    echo bla bla
    >/dev/null 2>&1 n'affiche pas l'erreur sur la sortie standard, c'est cela?
    Malheureusement mon systeme n'accepte pas pidof ou pgrep
    Merci pour tes infos.

    Bonne nuit,

    rouget

  4. #4
    Membre expérimenté Avatar de FRUiT
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 83
    Par défaut
    Citation Envoyé par rouget Voir le message
    while ps -ef | grep -v grep | grep /appli/hermes/bin/hcl >/dev/null 2>&1

    while ps -ef | grep /appli/hermes/bin/[h]cl >/dev/null 2>&1

Discussions similaires

  1. [Dates] Question sur les fonctions Date
    Par cerede2000 dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2006, 17h26
  2. Question sur la fonction recv
    Par Mr_Chut dans le forum Réseau
    Réponses: 14
    Dernier message: 15/09/2006, 12h43
  3. Question sur les fonctions "send()" et "recv(
    Par damien99 dans le forum MFC
    Réponses: 6
    Dernier message: 10/02/2006, 20h47
  4. Réponses: 1
    Dernier message: 08/02/2006, 11h18
  5. Réponses: 2
    Dernier message: 21/12/2005, 09h39

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