Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Comparaison de chaînes de caractères
Envoyé par: cancerus

Bonsoir,

Je n'arrive pas à comparer 2 chaînes de caractéres en ksh.
J'extraie l'extension d'un fichier et, en fonction de cette extension, je veux faire (ou pas) des actions :
EXT_NAME=`echo $PGM_NAME | cut -d -f2`
if [ $EXT_NAME!="txt" ]
then
echo "Le programme ne traite que les fichiers avec l'extension .txt"
exit 1
fi

Et bien rien à faire, je sors toujours sur ce message quelque soit l'extension de mon fichier. J'ai essayé de mettre des double quotes et d'en enlever un peu partout, rien n'y fait alors que

case $EXT_NAME in
"txt" )
FLAG=1;;
* )
echo "Le programme ne traite que les fichiers avec l'extension .txt"
exit 1;;
esac

fonctionne très bien. Sachant que je n'ai pas besoin de ce flag et que je suis persuadé qu'il est possible de comparer 2 chaînes de caractères, please, help me :-)

Poste le Tuesday 26 February 2008 18:41:51
Répondre     Citer    
Re: Comparaison de chaînes de caractères
Envoyé par: tellmewhy

Bonsoir cancerus, :-)

Bah, trois pistes peut-être.
La première, je suppose qu'il s'agit d'un oubli dans la recopie :

Citation

EXT_NAME=`echo $PGM_NAME | cut -d "." -f2`

La seconde, c'est que la déclaration de ta variable doit précéder (à tout hasard)
EXT_NAME=`echo $PGM_NAME | cut -d -f2`

La troisième c'est qu'il manque des espaces dans ta condition :

Citation

if [ $EXT_NAME!="txt" ]

devrait être :

Citation

devrait être if [ "$EXT_NAME" != "txt" ]

Sinon en bash il marche :
Lorsque la condition est respectée :

:~$ PGM_NAME="chose.txt"
:~$ EXT_NAME=`echo $PGM_NAME | cut -d "." -f2`
:~$ if [ "$EXT_NAME" != "txt" ];then echo "Le programme ne traite que les fichiers avec l'extension .txt";exit 1;fi 
:~$ echo $?
0

Lorsqu'elle ne l'est pas cela provoque une sortie.

Tu devrais d'ailleurs peut-être ajouter un sleep car on a pas le temps de voir le message.

Trois excellents liens sur le bash :

Guide avancé d'écriture des scripts Bash par Mendel Cooper
Le Shell par Frédéric Lang (au format pdf).
Le shell ou le retour du C:\> ! (et les commandes) par Jean-Christophe, Marc et Anne


Une mine d'or (le trésor de cep) : http://www.cepcasa.info/divers/

Poste le Tuesday 26 February 2008 20:39:12
Répondre     Citer    
Re: Comparaison de chaînes de caractères
Envoyé par: cancerus

Merci tellmewhy smiling smiley#.

Il s'agissait des espaces...
Et effectivement, j'ai oublié le . du cut dans la recopie du code (d'ailleurs, je ne mets pas de "" pour encadrer le séparateur et ça fonctionne bien).

Bonne journée.

Poste le Wednesday 27 February 2008 11:20:05
Répondre     Citer    
Re: Comparaison de chaînes de caractères
Envoyé par: tellmewhy

Bonjour cancerus, :-)

Bah, de rien, Bravo à toi ! ;-)

Poste le Wednesday 27 February 2008 11:26:25
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Comparaison de chaînes de caractères
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons