Shell prog

Résolu
ichigo -  
azertybou Messages postés 31 Statut Membre -
salut,
dans le but de comparer 3 chaine j'ai fais comme ca

---------------------
#!/bin/bash
echo "entrer la premiere chaine "
read ch1
echo " enter la deuxieme chaine "
read ch2
echo "enter la 3eme chaine "
read ch3

#ch1=$1
#ch2=$2
#ch3=$3
if \( $ch1 eq $ch2 -a $ch2 eq $ch3 \)
then
echo " les 3 chaine son egaux "

elif \( $ch1 eq $ch2 -a $ch2 -ne $ch3 \)
then
echo " les deux premier chaines sont egaux "

elif \( $ch1 -ne $ch2 -a $ch2 -eq $ch3 \)
then
echo " les deux derniere chaines chaine sont egaux "

elif \( $ch1 -ep $ch3 -a $ch2 -eq $ch3 \)
then
echo " la premiere chaine et la 3eme sont egaux"
else
echo " tout les chaines sont diferente 2 à 2"

fi-------------------------------------------
mais ca n'a pas marcher
qu'il qu'un peut m'aider ?
Configuration: Linux
Firefox 3.0

12 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Quelques erreurs dans ton script, notamment pour la commande test ([...]) ou au niveau des comparateurs de chaînes (==).
    #!/bin/bash
    
    echo "Entrer la premiere chaine"
    read ch1
    echo "Enter la deuxieme chaine"
    read ch2
    echo "Enter la troisieme chaine"
    read ch3
    
    if [ "$ch1" == "$ch2" -a "$ch1" == "$ch3" ]
    then echo "Les 3 chaînes sont identiques"
    elif [ "$ch1" == "$ch2" ]
    then echo "Les chaînes 1 et 2  sont identiques"
    elif [ "$ch1" == "$ch3" ]
    then echo "Les chaînes 1 et 3  sont identiques"
    elif [ "$ch2" == "$ch3" ]
    then echo "Les chaînes 2 et 3  sont identiques"
    else echo "Les 3 chaînes sont différentes"
    fi
    https://guidespratiques.traduc.org/guides/vf/Bash-Beginners-Guide/Bash-Beginners-Guide.html
    0
  2. ichigo
     
    ---------------------------------------------------------------
    Entrer la premiere chaine
    qq
    Enter la deuxieme chaine
    aa
    Enter la troisieme chaine
    qq
    [: 28: ==: unexpected operator
    [: 28: ==: unexpected operator
    [: 28: ==: unexpected operator
    [: 28: ==: unexpected operator
    Les 3 chaînes sont différentes
    -----------------------------------------------------------------
    ca n'a pas marché aussi
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Quel shell ?
    Quel système ?
    Quelle distribution ?

    Au cas ou j'aurai fait une erreur lorsque j'ai posté mon message précédent, j'ai recopié le script en le nommant "bar.sh" :
    [tmpfs]$ cat bar.sh
    #!/bin/bash
    
    echo "Entrer la premiere chaine"
    read ch1
    echo "Enter la deuxieme chaine"
    read ch2
    echo "Enter la troisieme chaine"
    read ch3
    
    if [ "$ch1" == "$ch2" -a "$ch1" == "$ch3" ]
    then echo "Les 3 chaînes sont identiques"
    elif [ "$ch1" == "$ch2" ]
    then echo "Les chaînes 1 et 2  sont identiques"
    elif [ "$ch1" == "$ch3" ]
    then echo "Les chaînes 1 et 3  sont identiques"
    elif [ "$ch2" == "$ch3" ]
    then echo "Les chaînes 2 et 3  sont identiques"
    else echo "Les 3 chaînes sont différentes"
    fi
    
    [tmpfs]$ ./bar.sh
    Entrer la premiere chaine
    qq
    Enter la deuxieme chaine
    aa
    Enter la troisieme chaine
    qq
    Les chaînes 1 et 3  sont identiques
    
    [tmpfs]$ ./bar.sh
    Entrer la premiere chaine
    aa
    Enter la deuxieme chaine
    aa
    Enter la troisieme chaine
    aa
    Les 3 chaînes sont identiques
    
    [tmpfs]$ ./bar.sh
    Entrer la premiere chaine
    aa
    Enter la deuxieme chaine
    qq
    Enter la troisieme chaine
    qq
    Les chaînes 2 et 3  sont identiques
    
    [tmpfs]$ ./bar.sh
    Entrer la premiere chaine
    aa
    Enter la deuxieme chaine
    qq
    Enter la troisieme chaine
    ww
    Les 3 chaînes sont différentes
    
    [tmpfs]$  
    ;-))
    0
  4. jeanbi Messages postés 15399 Date d'inscription   Statut Contributeur Dernière intervention   2 383
     
    re,
    je confirme
     ./teste1
    Entrer la premiere chaine
    aa
    Enter la deuxieme chaine
    dd
    Enter la troisieme chaine
    aa
    Les chaînes 1 et 3  sont identiques
    

    a+
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Merci ;-))
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jeanbi Messages postés 15399 Date d'inscription   Statut Contributeur Dernière intervention   2 383
     
    re
    de rien lol

    a+
    ps: vu que je suppose que comme moi la plus part du temps tu testes ce que tu reponds !!!
    ça ne pouvait que fonctionner vu les indications fournis
    0
  7. ichigo
     
    quand j'execute avec ./nomfichier j'ai le resultats correcte et quand je fais sh nomfichier
    j'ai des erreurs
    root@mounaim-desktop:/home/mounaim# ./td5ex1.sh
    Entrer la premiere chaine
    mm
    Enter la deuxieme chaine
    aa
    Enter la troisieme chaine
    aa
    Les chaînes 2 et 3 sont identiques
    root@mounaim-desktop:/home/mounaim# sh td5ex1.sh
    Entrer la premiere chaine
    mm
    Enter la deuxieme chaine
    aa
    Enter la troisieme chaine
    aa
    [: 19: ==: unexpected operator
    [: 19: ==: unexpected operator
    [: 19: ==: unexpected operator
    [: 19: ==: unexpected operator
    Les 3 chaînes sont différentes
    root@mounaim-desktop:/home/mounaim#
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Affiche la sortie de :
      ls -l /bin/*sh
      Merci.
      0
  8. jeanbi Messages postés 15399 Date d'inscription   Statut Contributeur Dernière intervention   2 383
     
    re
    bizarre ton truc car
     sh teste1
    Entrer la premiere chaine
    aa
    Enter la deuxieme chaine
    dd
    Enter la troisieme chaine
    mm
    Les 3 chaînes sont différentes
    

    au fait c'est pas la peine d'ajouter .sh
    a+

    0
  9. ichigo
     
    root@mounaim-desktop:/home/mounaim# ls -l /bin/*sh
    -rwxr-xr-x 1 root root 702160 2008-05-12 18:33 /bin/bash
    -rwxr-xr-x 1 root root 79988 2008-03-12 11:22 /bin/dash
    lrwxrwxrwx 1 root root 4 2008-10-26 09:05 /bin/rbash -> bash
    lrwxrwxrwx 1 root root 4 2008-10-26 09:05 /bin/sh -> dash
    root@mounaim-desktop:/home/mounaim#
    0
  10. ichigo
     
    root@mounaim-desktop:/home/mounaim# ls -l /bin/*sh
    -rwxr-xr-x 1 root root 702160 2008-05-12 18:33 /bin/bash
    -rwxr-xr-x 1 root root 79988 2008-03-12 11:22 /bin/dash
    lrwxrwxrwx 1 root root 4 2008-10-26 09:05 /bin/rbash -> bash
    lrwxrwxrwx 1 root root 4 2008-10-26 09:05 /bin/sh -> dash
    root@mounaim-desktop:/home/mounaim# cat td5ex1.sh
    #!/bin/bash

    echo "Entrer la premiere chaine"
    read ch1
    echo "Enter la deuxieme chaine"
    read ch2
    echo "Enter la troisieme chaine"
    read ch3

    if [ "$ch1" == "$ch2" -a "$ch1" == "$ch3" ]
    then echo "Les 3 chaînes sont identiques"
    elif [ "$ch1" == "$ch2" ]
    then echo "Les chaînes 1 et 2 sont identiques"
    elif [ "$ch1" == "$ch3" ]
    then echo "Les chaînes 1 et 3 sont identiques"
    elif [ "$ch2" == "$ch3" ]
    then echo "Les chaînes 2 et 3 sont identiques"
    else echo "Les 3 chaînes sont différentes"
    fi

    root@mounaim-desktop:/home/mounaim# sh td5ex1.sh
    Entrer la premiere chaine
    aa
    Enter la deuxieme chaine
    ss
    Enter la troisieme chaine
    aa
    [: 19: ==: unexpected operator
    [: 19: ==: unexpected operator
    [: 19: ==: unexpected operator
    [: 19: ==: unexpected operator
    Les 3 chaînes sont différentes
    root@mounaim-desktop:/home/mounaim#
    0
  11. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    lrwxrwxrwx 1 root root 4 2008-10-26 09:05 /bin/sh -> dash
    Voila le problème ;-((

    C'est pas le shell sh au sens strict (ni un lien symbolique vers /bin/bash comme dans beaucoup de distrib (Mandriva par exemple)), mais un dérivé du shell ash(voir https://fr.wikipedia.org/wiki/Debian_almquist_shell
    0
  12. ichigo
     
    meci pour votre aides et vos explications
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Remplace tous les "==" par "=" et ça devrait aller mieux ;-))
      0
  13. azertybou Messages postés 31 Statut Membre 3
     
    moi j'ai exucte cette programme danc
    il ya quelque chose dans system
    0