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 Script shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 24
    Points
    24
    Par défaut Problème Script shell
    Bonjour tout le monde,
    Voilà j'ai un petit problème je dois dans le cadre d'un projet scolaire développer un petit script shell avec un menu proposant d'installer et de configurer plusieurs services sauf que voilà je voudrais a la fin de l'installation de mysql demander a l'utilisateur si il veut lancer mysql sauf que le if ne marche pas voici mon 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
    26
    27
    28
    29
    30
    31
    32
    #Permet l'installation du service Mysql
    mysql(){
     
        echo "Installation du Service Mysql"
        sudo yum -y install mysqld
    # Pour une installation debian décommenter
    # apt-get install mysqld
     
        echo "Installation finie"
     
        echo "Lancement du service Mysql"
        systemctl start mysqld
        echo "Service lancé"
     
        read -p "Voulez vous lancer la console SQLl ? (o/n)" choix
     
    if [$choix == "o"] && [$choix == "oui"] &&
          [$choix == "y"] && [$choix == "yes"]
     then
       mysql -uroot -p
     
       else
       affiche_menu2
     
    #Pour debian/fedora uncomment
    # mysql -uroot -p
     
    #   echo 'Demarrage de Mysql'
     
       read
      fi
    }
    Merci beaucoup !

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

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

    [Ça] ne marche pas
    ça ne nous dit rien sur les circonstances du non-fonctionnement : il y a un message d'erreur ?

    • il faut des espaces autour des crochets.
    • == n'est pas POSIX : quel interpréteur de commandes utilises-tu ?
    • systemctl n'est apparemment pas sur Debian.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    Pour le moment je suis sur Mac car je n'ai pas sous la main mon autre ordinateur sous fedora, effectivement systemctl c'est pour fedora car mon script doit pouvoir fonctionner sous plusieurs distributions.
    Le message d'erreur est le suivant :

    Voulez vous lancer la console SQLl ? (o/n)o
    service.sh: line 62: [o: command not found

  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 bombers Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #Permet l'installation du service Mysql
    mysql(){
    ...
    if [$choix == "o"] && [$choix == "oui"] &&
          [$choix == "y"] && [$choix == "yes"]
     then
      ...
      fi
    }
    Tu testes si "$choix" est, à la fois, égal à "o" et également égal à "oui" et également égal à "y" et également égal à "yes"...

    Y a un truc...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    Oui je viens de corriger cette erreur j'ai remplacer par des "Ou" mais cela ne marge toujours pas

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 712
    Points
    12 712
    Par défaut
    Bonjour,

    Prendre en compte les remarques de N_BaH (surtout la première)
    Cordialement.

  7. #7
    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 bombers Voir le message
    Le message d'erreur est le suivant :

    Voulez vous lancer la console SQLl ? (o/n)o
    service.sh: line 62: [o: command not found
    Il dit qu'il ne trouve pas de commande nommée "[o", qui est le résultat de l'expansion de [$choix.

    La "commande" "[" est un piège notoire.
    C'est une sorte de raccourci pour "test".
    Et elle doit être séparée de ses arguments par une espace:

    Donc remplace if [$choix == "o"] par if [ "${choix}" = "o" ] et ça devrait aller mieux...

    Rq: dans ce genre de test, on utilise volontiers case plutôt que if+test

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    Merci pour vos réponse malheureusement avec le if cela ne passe pas, comment le faire avec un case je ne vois pas vraiment
    Merci beaucoup

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    cela ne passe pas
    c'est comme
    ça marche pas
    ça ne veut rien dire.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 712
    Points
    12 712
    Par défaut
    Exemples:
    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
    $ read choix ; if [ "$choix" = "o" -o "$choix" = "oui" -o "$choix" = "y" -o "$choix" = "yes" ] ; then echo $choix ; else  echo "pas bon"; fi
    o
    o
    $ read choix ; if [ "$choix" = "o" -o "$choix" = "oui" -o "$choix" = "y" -o "$choix" = "yes" ] ; then echo $choix ; else  echo "pas bon"; fi
    b
    pas bon
    $ read choix ; if [ "$choix" = "o" -o "$choix" = "oui" -o "$choix" = "y" -o "$choix" = "yes" ] ; then echo $choix ; else  echo "pas bon"; fi
    yes
    yes
    $ read choix ; if [ "$choix" = "o" -o "$choix" = "oui" -o "$choix" = "y" -o "$choix" = "yes" ] ; then echo $choix ; else  echo "pas bon"; fi
    oui
    oui
    $ read choix ; if [ "$choix" = "o" -o "$choix" = "oui" -o "$choix" = "y" -o "$choix" = "yes" ] ; then echo $choix ; else  echo "pas bon"; fi
    bob
    pas bon
    Cordialement.

  11. #11
    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 bombers Voir le message
    malheureusement avec le if cela ne passe pas,
    Essaie de le corriger pour que ça passe!
    Par exemple, remplace ce que tu as écrit par autre chose en fonction du message d'erreur ou du comportement observé.

    comment le faire avec un case
    Fais-le comme avec n'importe quel case!

    Et n'hésite pas à relire les réponses précédemment données!
    (sinon on va t'appeler bomonde...)

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    Sans soucis je vais essayer tout ça je vous tiens au courant de mon avancement merci pour vos explications

  13. #13
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 712
    Points
    12 712
    Par défaut
    Si tu es en bash, voici des exemples plus simples qui ne tiennent pas comptes de la casse (minuscule/majuscule):
    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
    $ read choix ; if [[ "${choix^^}" =~ ^(O|OUI|Y|YES)$ ]] ; then echo $choix ; else  echo "pas bon"; fi
    O
    O
    $ read choix ; if [[ "${choix^^}" =~ ^(O|OUI|Y|YES)$ ]] ; then echo $choix ; else  echo "pas bon"; fi
    o
    o
    $ read choix ; if [[ "${choix^^}" =~ ^(O|OUI|Y|YES)$ ]] ; then echo $choix ; else  echo "pas bon"; fi
    Ob
    pas bon
    $ read choix ; if [[ "${choix^^}" =~ ^(O|OUI|Y|YES)$ ]] ; then echo $choix ; else  echo "pas bon"; fi
    bO
    pas bon
    $ read choix ; if [[ "${choix^^}" =~ ^(O|OUI|Y|YES)$ ]] ; then echo $choix ; else  echo "pas bon"; fi
    yes
    yes
    ${choix^^} ==> Valeur de $choix en majuscule
    =~ ==> en bash, permet l'utilisation d'expression regulière qui ici est "^(O|OUI|Y|YES)$"
    Cordialement.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    Alors voilà après plusieurs tests sous debian :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    read choix; if ["$choix" = "o" -o "$choix" = "y" -o "$choix" = "yes" ] ; then echo $choix ; else echo "pas bon"; fi
    o
    bash: [o : commande introuvable
    pas bon

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    IL FAUT DES ESPACES AUTOUR DES CROCHETS !!! à droite et à gauche : autour !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  16. #16
    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 bombers Voir le message
    Alors voilà après plusieurs tests sous debian :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    read choix; if ["$choix" = "o" -o "$choix" = "y" -o "$choix" = "yes" ] ; then echo $choix ; else echo "pas bon"; fi
    o
    bash: [o : commande introuvable
    pas bon
    C'est bien la preuve que tu n'as pas lu les posts précédents!

    [Il me fait de plus en plus penser à bomonde]

  17. #17
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    Merci beaucoup, cela fonctionne sans soucis !

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

Discussions similaires

  1. script shell: problème avec le caractère espace
    Par Le fut dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 04/05/2017, 11h49
  2. problème script shell
    Par ben_tiba_asma dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 22/10/2011, 18h12
  3. Problème Script SHell
    Par foxrol dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 21/10/2011, 19h02
  4. problème script shell
    Par joelulrich dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 09/12/2010, 18h14
  5. problème script shell
    Par jeje69 dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 09/01/2008, 14h30

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