je trouve un script qui a l'extrait suivant: -Comment cette expression régulière travaille
userid=`expr "\`id\`" : ".*uid=[0-9]*(\(.[0-9a-z]*\)) .*"`
Il renvoie le code d'utilisateur.
Quand j'ai essayé d'apprendre comment il fait: -
#id
#uid=11008(adilm) gid=1200(cvs),1400(build)
Je réalise que assortit l'ID utilisateur ([0-9a-z] *.). Mais si j'ai placé comme ci-dessous:
#userid=`expr "uid=11008(ADILM) gid=1200(cvs),1400(build)" : ".*uid=[0-9]*(\(.[0-9a-z]*\)) .*"`
#echo $userid
ADILM
Cela fonctionne. Selon ma compréhension '.' correspond à ADILM. Mais quand j'ai enlevé '.' comme ci-dessous: -
#userid=`expr "uid=11008(ADILM) gid=1200(cvs),1400(build)" : ".*uid=[0-9]*(\([0-9a-z]*\)) .*"`
#echo $userid
ADILM
Il fonctionne toujours comment? Nous avons seulement fourni des lettres minuscules mais cela fonctionne toujours.
Comment rendre la casse sensible dans expr? – Adil
@Peter j'ai lu que "L'opérateur: peut remplacer pour match." J'ai essayé 'expr match 'uid = 11008 (ADILM) gid = gid = 1200 (cvs), 1400 (build)" ". * Uid = [0-9] * (\ (. [0-9a-z] * \)). * "' mais ça ne marche pas. Il semble que match soit sensible à la casse mais: est insensible à la casse (contrairement à ce qui est mentionné dans la page man et les guides) – Adil
Doit être quelque chose comme ça. Je ne sais pas si bien. –