Equivalent du 'like' en shell

Claude Lacroix -  
nowahn Messages postés 2 Statut Membre -
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
Configuration: Windows XP Internet Explorer 6.0

2 réponses

  1. Franzux Messages postés 9705 Statut Contributeur 1 146
     
    = ?
    0
  2. nowahn Messages postés 2 Statut Membre
     
    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