Equivalent du 'like' en shell

Fermé
Claude Lacroix - 14 sept. 2009 à 10:28
nowahn Messages postés 2 Date d'inscription dimanche 13 septembre 2009 Statut Membre Dernière intervention 15 septembre 2009 - 14 sept. 2009 à 13:20
Bonjour,
Je cherche à comparer 2 chaines de caractère avec un shell sous LINUX (/bin/sh) :

extrait du shell :
..
Site="toto"
if [ "Nom" ??? "$Site" ]
then
ect....
avec mes $Site pouvant avoit les valeurs toto1 toto2 toto3 ...etc, donc ces valeurs peuvent 'matcher' à mon test.

Je cherche l'opérateur ??? faisant l'équivalent du 'like' sous SQL
Merci
Claude
A voir également:

2 réponses

Franzux Messages postés 8907 Date d'inscription mercredi 5 décembre 2007 Statut Contributeur Dernière intervention 27 octobre 2015 1 145
14 sept. 2009 à 10:29
= ?
0
nowahn Messages postés 2 Date d'inscription dimanche 13 septembre 2009 Statut Membre Dernière intervention 15 septembre 2009
14 sept. 2009 à 13:20
Bonjour,

2 solutions, mais qui marche sous bash, pas sur que ça marche sous sh si il n'est pas bash (tu n'as qu'à essayer) :

- la forme simple :
if [["$Site" == toto*]]
Il faut les doubles [[et]], pas de "" autour du deuxième argument.
Ça utilise les mêmes caractères spéciaux que le shell (*, ?, […], …).

- la forme plus complexe :
if [["$Site" =~ 'toto.*']]
Il faut aussi les doubles [[et]].
Ça utilise des expressions régulière, c'est plus complexe mais ça permet de faire plus de chose.

Pour ton cas, la première solution est suffisante.

PS : fait pas gaffe aux liens, j'arrive pas à supprimer l'effet des doubles [] dans le message.
0