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 :

Comment afficher un statut puis le rafraîchir en ksh ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut Comment afficher un statut puis le rafraîchir en ksh ?
    Bonjour,

    Voilà j'ai un petit problème.

    Je suis sur un programme qui permet de lancer des job. Une fois que le job est lancé via la commande qstat je peux voir l'état de mon job.

    Sauf que moi mon script va permettre d’afficher uniquement le job qui m’intéresse, c'est à dire celui qui a été lancé via le script et non pas ceux de tout les utilisateurs.

    alors jusqu'ici pas de problème j'ai réussi à me débrouiller et ça marche.

    Mon soucis vient au niveau de ce bout de code :

    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
     
    ID_JOB=$(qsub $JOB_NAME_FILE | cut -f1 -d.)
    STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
    if [ $STATUS = "Q" ]
    then
              echo "Status job : Waiting ..."[/INDENT]
    fi
     
    if [ $STATUS = "R" ]
    then
              echo "Status job : Running ..."
    fi
     
    if [ $STATUS = "E" ]
    then
              echo "Status job : Finished ..."[/INDENT]
    fi
    Dans cette configuration là, l'affichage est unique c'est à dire qu'une fois affiché le status du job n'est plus mit à jour.

    j'imagine que dans un premier temps faudrait mettre une boucle while pour évaluer la valeur du status et ainsi mettre à jour sa valeur, j'y ai pensé je vous rassure, mais comment faire pour que tant que l'on se trouve dans cette boucle While, l'affichage du status puisse changer en passant par exemple de Waiting à Running et enfin Finished sans que ce ne soit écrit une ligne en dessous mais en rafraîchissant la valeurs de la variable $STATUS et ainsi la faire passé de Waiting à Running etc.... au même endroit de l'écran

    Je ne sais pas si j'ai été bien clair , mais pour donner un exemple, prenez le cas d'un pourcentage qui s'afficherai à l'écran et qui évoluerai de 0% à 100% de manière dynamique mais statique dans l'espace (le changement de la valeur du pourcentage se fait au même endroit sur l'écran).

    Une idée ?

    Merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    Bonjour,

    [...]comment faire pour que tant que l'on se trouve dans cette boucle While, l'affichage du status puisse changer [...]
    tu exécutes qstat dans la boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    IDJOB=$(qsub ...)
    while true
    do
       case $(qstat ...| awk -v idJob="$IDJOB" '{if ($0".master" ~ idJob)print $5}') in
          Q) echo ...;;
          R) echo ...;;
          E) echo ...;;
       esac
    done
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Oui sur ça pas de problème. en fait j'ai vue sur des exemples de barres de progressions en ksh au lieu de echo ils utilisaient printf.

    Mon souci n'est pas vraiment la boucle, mais plutôt la manière d'afficher à l'écran l'état du status.

    regardez l'exemple via ce lien progressbar où l'on voit l'évolution des pourcentages. Je veux que la même chose s'affiche à mon écran (sans la barre proprement dite) mais au lieu de passer de 0% à 1% 2% jusque 100%etc ... je veux passer de Waiting à Running et Finished en fonction du retour de la valeur de $STATUS (Q,R, E).

    Peut être que je ne suis pas très clair ?

    Merci d'avance.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par nekcorp Voir le message
    je veux passer de Waiting à Running et Finished en fonction du retour de la valeur de $STATUS (Q,R, E).
    Si tu veux une version portable (comme le "bar" que tu montres en exemple), ça peut être un peu compliqué... (cf. le code de bar).

    Sinon, pour une version ad hoc, dans ta boucle, tu remplaces:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Status job : Waiting ..."
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo -n "^MStatus job : Waiting ...    "
    (avec un "vrai" return (ctrl-M) et non les deux caractères "^" "M")

    Si l'option echo -n n'est pas supportée, il faut utiliser "\c":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "^MStatus job : Waiting ...    \c"
    Dans tous les cas, il faut suffisamment d'espaces à la fin de la chaîne pour "effacer" les caractères précédents lorsque la chaine courante est moins longue que la précédente.

    Rq: cette solution n'utilise pas les capacités du termcap

  5. #5
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Si l'option echo -n n'est pas supportée, il faut utiliser "\c":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "^MStatus job : Waiting ...    \c"
    Plutôt que de se casser la tête avec echo, mieux vaut utiliser la commande portable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf "\rStatus job : Waiting ...    "
    ɹǝsn *sıɹɐlos*

  6. #6
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Plutôt que de se casser la tête avec echo, mieux vaut utiliser la commande portable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf "\rStatus job : Waiting ...    "
    Merci pour vos réponses.

    donc j'ai plutot utilisé le printf et j'ai fais un test avec le code ci dessous :

    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
     
    #!/bin/ksh
     
    A=0
     
    while [ $A != 101 ]
    do
    	if [ $A -lt 10 ]
    	then
    		STATUS="Waiting ..."
    	elif [ $A -eq 10 ]
    	then
    		STATUS="Running ..."
     
    	elif [ $A -eq 100 ]
    	then
    		STATUS="Finnished !"
    	fi
     
    printf "\rStatus job : $STATUS"
    ((A=A+1))
    sleep 0.1
    done
    printf "\n"
    Donc le statuts change bien comme je le souhaite, je vais donc maintenant l'adapter à mon code.

    Encore merci pour votre participation.

  7. #7
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    par contre je rencontre un soucis en l'adaptant avec mon code

    voici le code :

    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
     
    STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
    while [ $STATUS != "E" ]
    do
         STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
         if [ $STATUS = "Q" ]
         then
               STATUS="Wainting ..."
     
         elif [ $STATUS = "R" ]
         then
               STATUS="Running ..."
     
     
         elif [ $STATUS = "E" ]
         then
               STATUS="Finished !"
     
         fi	      
    printf "\rStatus job : $STATUS"
    done
    qstat
    qdel $ID_JOB
    La première ligne du code je récupère l'état de mon statut qui peut prendre la valeur Q,R ou E

    Donc je dis à ma boucle que tant que STATUS ne vaut pas E (et donc le job terminé) tu reste dans la boucle.

    Sauf que j'obtient ce message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Status job : Wainting ..../Launcher_v1.1.ksh[97]: writejob[54]: [: ...: unknown operator
    Etant donné que tout le code n’apparaît pas je vais vous expliquer comme se compose mon code.
    J'appel à la ligne 97 la fonction writejob et dans cette fonction la ligne 54 correspond à la ligne 2 while [ $STATUS != "E" ] du code ci dessus.

    j'ai limpression que le problème vient de !=, pourtant j'ai regardé sur les doc et pour des chaines de caractères il fait bien utiliser !=

    une idée ?

    Merci d'avance

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Es-tu certain que $STATUS n'est jamais vide ?
    Par sécurité, j'aurais écrit while [ "${STATUS}" != "E" ]
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Bon j'ai trouvé

    En fait comme on compare deux chaines de caractères fallait ajouter à la variable $STATUS des (" ").

    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
     
    STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
    while [ "$STATUS" != "E" ]
    do
         STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
         if [ "$STATUS" = "Q" ]
         then
               STATUS="Wainting ..."
     
         elif [ "$STATUS" = "R" ]
         then
               STATUS="Running ..."
     
     
         elif [ "$STATUS" = "E" ]
         then
               STATUS="Finished !"
     
         fi	      
    printf "\rStatus job : $STATUS"
    done
    Par contre je viens de remarquer qu'un cas de figure peut arriver et ce n'est pas géré par le code.

    Le cas où $STATUS ne vaudrait rien !!!!!

    J'ai essayé de modifier mon code en ajoutant un opérateur logique OU grâce aux deux pipes ||

    Voici le code :

    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
     
    STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
    while [ "$STATUS" != "E" || "$STATUS" = "" ]
    do
         STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
         if [ "$STATUS" = "Q" ]
         then
               STATUS="Wainting ..."
     
         elif [ "$STATUS" = "R" ]
         then
               STATUS="Running ..."
     
     
         elif [ "$STATUS" = "E" || "$STATUS" = "" ]
         then
               STATUS="Finished !"
     
         fi	      
    printf "\rStatus job : $STATUS"
    done
    Sauf que j'obtiens ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ./Launcher_v1.1.ksh[97]: writejob[54]: [: ']' missing
    ./Launcher_v1.1.ksh[97]: writejob[54]: Q: not found [No such file or directory]
    la ligne 54 mentionnée correspond toujours à la ligne while [ "$STATUS" != "E" || "$STATUS" = "" ]

    Une idée ?

    Merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    en ksh, ça n'est probablement pas différent de bash : || n'est pas valable entre [ ], il faudrait utiliser -o, ou [ ... ] || [ ... ].

    de plus, tant que $status égale E, alors $status ne vaudra jamais R, ou Q, car la boucle s'interrompera si la variable vaut autre chose que E.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    en ksh, ça n'est probablement pas différent de bash : || n'est pas valable entre [ ], il faudrait utiliser -o, ou [ ... ] || [ ... ].

    de plus, tant que $status égale E, alors $status ne vaudra jamais R, ou Q, car la boucle s'interrompera si la variable vaut autre chose que E.
    Oui effectivement j'ai résolu le problème comme ça [ ... ] || [ ... ].

    cependant je crois que je me suis mal fait comprendre concernant l'état de ma variable $STATUS.

    En fait la valeur de $STATUS ne peut valoir que Q, R et E et dans certains cas il se peut qu'elle ne vaut RIEN.

    La boucle doit continuer tant que $STATUS ne vaut pas E ou RIEN. Le E signifie que le job est terminé, et le rien veux dire soit le job a été killé soit il n'apparait pas dans le listing des job obtenu avec la commande qstat pour x raison.

    Du coup pour ma variable $STATUS je dois gérer 2 états soit E soit RIEN.

    Sauf que durant mes essais, lorsque je kill volontairement mon job et donc $STATUS renvoie RIEN, j'obtiens bien la phrase : Status job : Finished !, mais je ne peux pas reprendre la main sauf en faisant un CTRL+C.

    je ne suis donc pas sortie de la boucle et je ne comprend pas pour quoi ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    ce n'est donc pas une boucle tant que (while), mais jusqu'à ce que (until) que tu dois utiliser.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ce n'est donc pas une boucle tant que (while), mais jusqu'à ce que (until) que tu dois utiliser.
    j'ai l'impression d'avoir plus de problèmes avec until.

    J'ai essayé de faire ça :

    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
     
    STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
    until [ "$STATUS" != "" ]   
    do
         STATUS=$(qstat | grep "$ID_JOB.master" | awk '{print $5}')
     
         if [ "$STATUS" = "Q" ]
         then
               STATUS="Wainting ..."
     
         elif [ "$STATUS" = "R" ]
         then
               STATUS="Running ..."
     
     
         elif [ "$STATUS" = "" ]
         then
               STATUS="Finished !"
         fi     	    
         printf "\rStatus job : $STATUS"
    done
    Donc je lance mon job et le retour de $STATUS est Q (car le job est en attente). Je kill le job, le job n'apparait plus donc $STATUS renvoie RIEN et seulement au moment ou je kill le job je devrais voir apparaître Job Status : Finished et reprendre la main.

    Sauf que dans mon cas, même si $STATUS vaut Q, je ne rentre pas dans la boucle.

    Si j'ai bien compris, until veut dire dans mon cas : Fait cette boucle tant que ma variable $STATUS ne vaut rien. Tant quelle vaut quelque chose la boucle continue. C'est bien ça ?

    Encore merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    je ne suis pas très concentré : la fatigue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    status=$(qsub ... | awk '...')
    until test -z "$status" -o "$status" = "E" # jusqu'à ce que ( $status n'existe pas ou est vide OU $status vaut E )
    do
       case $status in
          Q) printf ...;;
          R) printf ...;;
       esac
       status=$(qsub ... | awk '...')
    done
    et puis, tester qu'une variable n'est pas égale à rien ne m'est pas naturel.

    désolé pour le contretemps.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    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
    status=$(qsub ... | awk '...')
    until test -z "$status" -o "$status" = "E" # jusqu'à ce que ( $status n'existe pas ou est vide OU $status vaut E )
    do
       case $status in
          Q) printf ...;;
          R) printf ...;;
       esac
       status=$(qsub ... | awk '...')
    done
    Si on n'a pas peur, pour faire un test qui retourne true lorsque:
    soit le variable n'est pas définie (unset)
    soit elle est définie, mais vide
    soit elle vaut une certaine valeur 'E',
    on peut utiliser les accolades et le ":-" comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    until test "${status:-E}" = 'E'
    do
       case $status in
          Q) printf ...;;
          R) printf ...;;
       esac
       status=$(qsub ... | awk '...')
    done
    En plus, ç'a l'avantage de ne pas planter si on utilise l'option 'nounset'...

  16. #16
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Est-ce qu'il n'y a aucun risque de plantage sur case $status in quand $status est vide ou non défini ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    il n'y a pas de raison que ça plante : case ne traite que les cas prévus, si la valeur ne correspond à aucun cas, il n'y aura simplement pas de traitement.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  18. #18
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Il serait peut-être plus sûr d'encadrer la variable de guillemets...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    même pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ var="bla bla"
    $ case $var in b*) echo ok;; *) echo ko; esac
    ok
    et le dernier "cas" ne nécessite pas les deux point-virgules.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  20. #20
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    J'insiste !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ var=""
    $ case $var in b*) echo ok;; *) echo ko; esac
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. [Objective-C] comment afficher dans un scrollview une image ou une vidéo puis du texte?
    Par Seelass dans le forum Objective-C
    Réponses: 0
    Dernier message: 17/07/2012, 16h55
  2. Réponses: 1
    Dernier message: 26/02/2010, 16h30
  3. iExlorer ou autres, comment afficher la barre de statut
    Par Rodolphe_1940 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/12/2006, 18h38
  4. Comment afficher les toolTipText dans une zone de statut ?
    Par nicok01 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/01/2005, 14h32
  5. [TP][MULTI-PROBLEME]Comment afficher des images pcx
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 24/10/2002, 14h57

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