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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 135
    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 135
    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.

+ 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