BASH test dans liste expression regulière

Résolu
Bonjour,

Je cherche à gérer une liste d'exception, si le fichier contient dans son nom un des mot clef je ne traite pas.

donc si le fichier s'appel toto_access.log je traite pas ....

IGNORE_FILES_ALERTE="access,infos" 

 if [[ $IGNORE_FILES_ALERTE == *'basename ${fich}'* ]] 
then 
            echo "je ne traite pas ce fichier basename ${fich}, il fait parti des exceptions aux alertes" 
else 
            //ici je bosse                  
fi 


evidemment mon [[ ne semble pas fonctionner .... au secours ...

Stéphane

6 réponses

  1. Contributeur
    Salut,

    Tu peux sortir oui et loin ;-))

    Pour la petite histoire, le titre initial était : PERL test dans liste expression regulière

    D'où mon interrogation ;-)
    1. Modérateur
      Salut,

      Rassures-moi, c'est pas du Perl, c'est du Bash non ?
      Je pense qu'il fait allergie à Perl ;-DDD, toi aussi d'ailleurs --------------------

      ----------------> Je sors ;-)))
      1. for fich in 'ls -1 ${LOGS_PATH}/*.log 2>/dev/null'
        do
        


        donc en clair le nom de chaque fichier, je veux pas traiter totot_access.log ou access_toto.log
        1. Contributeur
          Ça j'avais compris, ce que je veux c'est savoir à quoi ressemble le nom de tes fichiers et comprendre pourquoi le test échoue ;-\

          Sans ça je ne peux pas t'aider ;-(
        2. ben c'est le fichiers de log apache donc rien de particulier ...
          je comprend pas bien la question mais par exemple tout à l'heure j'ai eu une alerte sur un fichier nommé : /var/log/apache2/access_edistrigame.log
        3. Contributeur
          Ben ne te casses pas la tête :

          for fich in 'ls -1 ${LOGS_PATH}/*.log 2>/dev/null | egrep -v 'access|infos''
        4. a non pas possible, je les exclus des alertes mails / sms mais je les traites quand même par ftp .... donc il faut qu'ils passent dans la boucles
          j'ai simplifié le code pour la question :)
        5. Contributeur
          Essaies ça (le retour à la ligne dans la déclaration de la variable "IGNORE_FILES_ALERTE" est voulu et normal, c'est pour pouvoir le traiter avec "fgrep") :

          IGNORE_FILES_ALERTE="access 
          infos" 
          
          fgrep -q -e "${IGNORE_FILES_ALERTE}" <<<${fich} 
          
          retval=$? 
          
          if [[ ${retval} = 0 ]] 
          then  
                      echo "je ne traite pas ce fichier basename ${fich}, il fait parti des exceptions aux alertes"  
          else  
                      //ici je bosse                   
          fi 
      2. Contributeur
        Salut,

        Rassures-moi, c'est pas du Perl, c'est du Bash non ?