Shell prog

Résolu
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. moi j'ai exucte cette programme danc
    il ya quelque chose dans system
    1. meci pour votre aides et vos explications
      1. Modérateur
        Remplace tous les "==" par "=" et ça devrait aller mieux ;-))
    2. 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#
      1. 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#
        1. Contributeur
          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+

          1. 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#
            1. Modérateur
              Affiche la sortie de :
              ls -l /bin/*sh
              Merci.
          2. Contributeur
            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
            1. Contributeur
              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+
              1. Modérateur
                Merci ;-))
            2. Modérateur
              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]$  
              ;-))
              1. ---------------------------------------------------------------
                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
                1. Modérateur
                  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