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 :

Problème structure conditionnelle IF en shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Par défaut Problème structure conditionnelle IF en shell
    bonjour,

    voici ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function op_valide()
    {
        if [ [ $1 = $2 ] ||  [[ $1 == "nop" ] && [ $2 == "op" ]]]
        then
            exit 0 ;
        fi
        return 1;
    }
    et jai ça comme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ./question2_calculette.sh: ligne 4: Erreur de syntaxe dans une expression conditionnelle
    ./question2_calculette.sh: ligne 4: Erreur de syntaxe près de « ] »
    ./question2_calculette.sh: ligne 4: `   if [ [ $1 = $2 ] ||  [[ $1 == "nop" ] && [ $2 == "op" ]]]'
    je ne vois pas ou est le problème exactement merci de m'aider !

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 703
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ [ $1 = $2 ] ||  [[ $1 == "nop" ] && [ $2 == "op" ]]]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if test "$1" = "$2" || test "$1" = "nop" -a "$2" = "op"
    les crochets ne servent pas à grouper des tests, simple ou double ce sont des alias* de la commande interne test.

    * c'est vrai pour les crochets simples, pas pour les doubles qui sont un test évolué (pas de découpage en mots, test de regex...).

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Par défaut
    merci beaucoup pour cette réponse rapide ! et le -a sert à quoi ? merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 703
    Par défaut
    regarde l'aideil y a de bons tutos sur le site, affichés dans ma signature.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Par défaut
    merci je vais voir ça

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 870
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zaham Voir le message
    merci beaucoup pour cette réponse rapide ! et le -a sert à quoi ? merci
    Bonjour
    -a => connecteur "and" => nombre compris entre 1 et 5: test $nb -ge 1 -a $nb -le 5.
    -o => connecteur "or" => nombre non compris entre 1 et 5: test $nb -lt 1 -o $nb -gt 5.

    Il ne faut pas confondre le && (connecteur "and" pour manipuler les commandes Unix) et le "-a" (connecteur "and" interne à l'instruction "test").
    Même si on peut remplacer un "-a" par un "&&" (test $nb -ge 1 && test $nb -le 5) pour un résultat visuellement identique, le mécanisme interne n'est pas le même...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Problème structure conditionnelle
    Par cpalperou dans le forum MATLAB
    Réponses: 3
    Dernier message: 17/12/2012, 15h10
  2. [XSLT]la structure conditionnelle.
    Par Extra-Nitro dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 22/08/2006, 14h46
  3. Réponses: 2
    Dernier message: 09/03/2006, 15h28
  4. [Language][Compilateur]Objets et structures conditionnelles
    Par goran kajfes dans le forum Langage
    Réponses: 5
    Dernier message: 30/11/2005, 23h55
  5. [MySQL] problème structure if() et op. comparaison
    Par JACOBS dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/09/2005, 19h50

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