Shell prog

Résolu/Fermé
ichigo - 2 nov. 2008 à 13:24
azertybou Messages postés 26 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 16 novembre 2008 - 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 ?
A voir également:

12 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
2 nov. 2008 à 13:41
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
---------------------------------------------------------------
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
2 nov. 2008 à 15:08
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
jeanbi Messages postés 15118 Date d'inscription samedi 9 décembre 2006 Statut Contributeur Dernière intervention 6 février 2023 2 182
2 nov. 2008 à 15:14
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
2 nov. 2008 à 15:16
Merci ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeanbi Messages postés 15118 Date d'inscription samedi 9 décembre 2006 Statut Contributeur Dernière intervention 6 février 2023 2 182
2 nov. 2008 à 15:37
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
2 nov. 2008 à 17:56
Affiche la sortie de :
ls -l /bin/*sh
Merci.
0
jeanbi Messages postés 15118 Date d'inscription samedi 9 décembre 2006 Statut Contributeur Dernière intervention 6 février 2023 2 182
2 nov. 2008 à 17:54
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
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
2 nov. 2008 à 18:05
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
meci pour votre aides et vos explications
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
2 nov. 2008 à 18:12
Remplace tous les "==" par "=" et ça devrait aller mieux ;-))
0
azertybou Messages postés 26 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 16 novembre 2008 3
2 nov. 2008 à 21:54
moi j'ai exucte cette programme danc
il ya quelque chose dans system
0