Posez votre question Signaler

Shell prog [Résolu]

ichigo - Dernière réponse le 2 nov. 2008 à 21:54
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 ?
Lire la suite 

Shell prog »

15 réponses
Réponse
+0
moins plus
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
http://www.traduc.org/docs/guides/vf/Bash-Beginners-Guide/Bash-Beginners-Guide.html
Ajouter un commentaire
Réponse
+0
moins plus
---------------------------------------------------------------
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
Ajouter un commentaire
Réponse
+0
moins plus
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]$  
;-))
Ajouter un commentaire
Réponse
+0
moins plus
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+
jipicy - 2 nov. 2008 à 15:16
Merci ;-))
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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#
jipicy - 2 nov. 2008 à 17:56
Affiche la sortie de :
ls -l /bin/*sh
Merci.
Ajouter un commentaire
Réponse
+0
moins plus
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+

Ajouter un commentaire
Réponse
+0
moins plus
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#
Ajouter un commentaire
Réponse
+0
moins plus
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#
Ajouter un commentaire
Réponse
+0
moins plus
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 http://fr.wikipedia.org/wiki/Debian_almquist_shell)
Ajouter un commentaire
Réponse
+0
moins plus
meci pour votre aides et vos explications
jipicy - 2 nov. 2008 à 18:12
Remplace tous les "==" par "=" et ça devrait aller mieux ;-))
Ajouter un commentaire
Réponse
+0
moins plus
moi j'ai exucte cette programme danc
il ya quelque chose dans system
Ajouter un commentaire
Ce document intitulé « shell prog » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook