Votre navigateur est obsolète. Téléchargez un navigateur moderne, par exemple FireFox.
Léa-Linux : Forum
Le forum de Léa abrite des discussions autour des Logiciels libres.
Syndication
  • RSS ForumForum complet
  • RSS Forum - DéveloppementForum - Développement
  • RSS Forum - Développement - 334871Cette discussion

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.

Important : quand vous posez une question, n'oubliez pas de nous donner les indications suffisantes pour que nous puissions répondre. En effet, la divination n'est pas le fort du Linuxien averti. Pour une meilleure compréhension, le bon usage de la grammaire et de l'orthographe est fortement encouragé. En particulier, le langage SMS est à éviter absolument. En cas d'abus, il pourra être censuré sans autre forme de procès.
Les messages dont le contenu est illégal (incitant à la haine - raciale ou autre, diffamant), ou dont le contenu est sans rapport avec le sujet du forum, ou qui sont parfaitement stupides ou hors sujet seront supprimés sans pitié. Il pourra même être fait appel au fournisseur d'accès du coupable pour faire cesser ses agissements.
» Index du forum » Développement » Comparaison de chaînes de caractères
Aller à la discussion: PrécédentSuivante
Action: Nouveau sujetChercherS'authentifier
Comparaison de chaînes de caractères
Auteur: cancerus (IP enregistrée)
Date: le 26 février 2008 à 18:41

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 image : content

Re: Comparaison de chaînes de caractères
Auteur: tellmewhy (IP enregistrée)
Date: le 26 février 2008 à 20:39

Bonsoir cancerus, image : content

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


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 :


if [ $EXT_NAME!="txt" ]


devrait être :


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/

Re: Comparaison de chaînes de caractères
Auteur: cancerus (IP enregistrée)
Date: le 27 février 2008 à 11:20

Merci tellmewhy image : applaudissement.

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.

Re: Comparaison de chaînes de caractères
Auteur: tellmewhy (IP enregistrée)
Date: le 27 février 2008 à 11:26

Bonjour cancerus, image : content

Bah, de rien, Bravo à toi ! image: clin d`oeil



Nom du forum : (antispam) - (en développement:saisir un texte pour le message, rempli cette zone automatiquement)
Votre nom: 
Votre email: 
Sujet: 

 
Ce forum est boosté par Phorum.