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 :

Mon script ne prend pas en compte mes conditions


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Technicien Informatique
    Inscrit en
    Juin 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2019
    Messages : 13
    Par défaut Mon script ne prend pas en compte mes conditions
    Bonjour,

    Mon script ne prend pas en compte mes conditions :
    Nom : 2019-06-21 10_16_27-HEL-TS-VMTHOMAS sur hel-ps-esx-4.gds.local.png
Affichages : 733
Taille : 192,4 Ko

    Peu importe ce que je rentre pour la variable "ficenv", il va me dérouler le script en entier..

    Pouvez vous m'aider svp?

    Merci

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    1) Sur le forum, privilégie le copier/coller de ton code entre 2 balises "code"; plutôt que la capture d'écran.
    2) Il faut lire et nous transmettre les messages d'erreur.
    3) Il y a une commande entre le if condition et le then. Ceci est une erreur. N'est-ce pas ?
    4) Tu devrais mettre tes variables texte entre double quotes. Sinon, un utilisateur entrant un espace dans sa réponse va faire hurler ton script.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ "$ficenv" = "v" ]; then
    5) echo "$message"; read toto se résume par 6) Si tu veux une seule lettre en entrée du "read", tu peux utiliser l'option "-n"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read -n 1 -p "f ou v ?" ficenv
    Cela n'attend plus le retour chariot.
    7) Le shebang doit être sur la première ligne. Sinon, ce n'est qu'un commentaire.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Informatique
    Inscrit en
    Juin 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2019
    Messages : 13
    Par défaut
    Merci pour ton aide.

    Le shebang est bien sur la première ligne, c'est juste l'affichage qui est fait comme ça..
    Quelle est l’importance de tes ";" dans tes exemples?

    Voilà ce que j'ai modifié du coup :
    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
    #!/bin/bash
     
    echo "Saisir l'option que vous désirez, f pour fichier, v pour variable"
    read ficenv
     
    echo "Saisir votre chaine de caractère, si vous avez choisit f, entrez le chem$
    read chaine
     
    #debut du 1er cas avec env
    if [ "$ficenv" = "v" ] then
          echo "Voici les résultats dans la commande env"
          env | grep -n $chaine
     
          echo "Voici les résultats dans la commande set"
          set | grep -n $chaine
     
    #debut du 2eme cas avec fichier
    elif [ "$ficenv" = "f" ]
          then ps r $chaine
     
    else
          echo "Il faut rentrer f ou v"
    fi
    Et voilà mon message d'erreur :

    scriptlinux.sh: ligne 18: erreur de syntaxe près du symbole inattendu « elif »
    scriptlinux.sh: ligne 18: `elif [ "$ficenv" = "f" ]'

    Je débute tout juste en script, donc je fais des erreurs bêtes aha

    Merci encore

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Les points virgules remplacent le fait d'aller à la ligne.

    Dans ton code, la commande "echo" renvoie toujours vrai, donc le code juste après "then" est toujours exécuté, quelque soit le code entre "if" et "echo".

    Dans ton nouveau code, il manque un ";" avant le then. (Ou un retour à la ligne, donc)

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Informatique
    Inscrit en
    Juin 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2019
    Messages : 13
    Par défaut
    Merci beaucoup, ça fonctionne comme je le voulais

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Pour tester la valeur de $ficenv tu aurais pu utiliser l'opérateur case plutôt qu'une série de if..elif..else
    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.

  7. #7
    Membre averti
    Homme Profil pro
    Technicien Informatique
    Inscrit en
    Juin 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2019
    Messages : 13
    Par défaut
    C'est noté, je vais me pencher un peu plus là dessus

  8. #8
    Membre averti
    Homme Profil pro
    Technicien Informatique
    Inscrit en
    Juin 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2019
    Messages : 13
    Par défaut
    Bonjour

    Grace à vous, voici comment à avancer mon exercice !
    Pour la deuxième partie du script, je dois faire en sorte qu'il exécute un fichier exécutable (et qu'il affiche les informations du processus) avec le chemin spécifié dans la commande : nomduscript.sh f <chemin>
    Pour les informations, je pensais utiliser la commande "ps", cela dit je ne sais pas trop comment l'utiliser, ni trop comment lancer l’exécutable..
    Si vous pouviez me mettre sur la voie ce serait parfait !

    Merci encore à vous.


    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
    #Vérification du nb de paramètres fournit par l'utilisateur
     
    case $# in
     0) echo "Vous devez spécifier des paramètres"
        echo "Syntaxe : v <chaine de caractère> ou f <chemin du fichier>"
        echo "Si vous choisissez v, le script cherchera votre chaine de caractère dans la commande set & env"
        echo "Si vous choisissez f, le script exécutera le fichier spécifier par votre chemin et affichera ses informations";;
     1) echo "Il manque un paramètre";;
     2) echo "Votre script va s'éxécuter";;
     *) echo "Vous avez renseigné trop de paramètres"
    esac
     
    if [ "$1" = "v" ]
    then
       echo
       echo "Voici les résultats dans la commande env"
       env | grep -n $2
       echo
       echo "Voici les résultats dans la commande set"
       set | grep -n $2
     
    #début du script pour le cas 2
     
    elif [ "$1" = "f" ]
    then
       echo "script en cours de création"
     
    else
       echo "Il faut saisir l'option f ou v"
    fi

  9. #9
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ ps -p 5544 -o pid,uname,pcpu,pmem,comm
      PID USER     %CPU %MEM COMMAND
     5544 flodelarab   3.7  2.4 firefox-esr
    $ sleep 10 & ps -p $! -o pid,uname,pcpu,pmem,comm
    [1] 7873
      PID USER     %CPU %MEM COMMAND
     7873 florian   0.0  0.0 sleep
    Note bien l'utilisation de $!.

    Pour plus d'infos :
    D'autre part, pour tout fichier, il suffit de l'appeler, s'il a les droits d'exécution.

  10. #10
    Membre averti
    Homme Profil pro
    Technicien Informatique
    Inscrit en
    Juin 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2019
    Messages : 13
    Par défaut
    Merci beaucoup.

    Je test ça et te fais un retour :p

    Modification : Tout est ok ! Merci encore !

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

Discussions similaires

  1. Dev c++ ne prends pas en compte mes modifications.
    Par Geo34 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 29/03/2010, 09h37
  2. Réponses: 2
    Dernier message: 02/11/2009, 12h57
  3. IIS ne prend pas en compte mes changement de dll
    Par MAXXPER dans le forum IIS
    Réponses: 1
    Dernier message: 06/10/2008, 14h12
  4. [Info]Eclipse ne prend pas en compte mes modifs...
    Par Baptiste Wicht dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/01/2006, 17h50

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