Tester présence variable dans fichier en shel

Résolu
Bonjour,

Je cherche à tester la présence d'une variable qui ce trouve à l'intérieur d'un fichier. Si cette cette variable existe: continuer l'exécution du script sinon sortir.

Le script qui analyse le fichier est en shell.

j'ai pensé a faire:

if(P330)
{
script à éxécuter
}
else
{
}

merci
Configuration: Systeme: Windows XP Home SP3, 80 DDR, 1Go RAM

Antivirus: Avast

Pare-feu: fournit par Windows

Autres: CCleaner, Spybot

9 réponses

  1. Modérateur
    Salut,

    Qu'entends-tu par "variable" ? Un mot dans un fichier ?
    grep -q "mot_à_chercher" fichier
    if [ "$?" = "0" ]
    then exécuter
    else ...
    fi
    0
    1. Salut,

      oui, par variable je voulais dire un mot dans un fichier.

      merci
      0
      1. Salut,

        J'ai testé ya commande mais rien je n'arrive pas à la faire fonctionner:

        #$ nl adress_coordonnee1.awk
        {
        
        for fich in *.txt; do
        
        grep -q "mot_à_chercher" fichier
        if [ "$?" = "0" ]
        then
        
        sed "s/address /'/g" adress2_${fich%.*}.txt > adress1_${fich%.*}.txt
        sed "s/rue/'/g" adress1_${fich%.*}1.txt > adress2_${fich%.*}.txt
        
        #permet de vider la table avant de la remplir
        echo 'echo "truncate table "adresse_'${fich%.*}'" ;" | mysql fournisseur ' > ADRESSE_FINAL_${fich%.*}.sql
        
        
        #affiche "insert into ..." dans un fichier nommé adress_text.csv
        echo 'echo "insert into adresse_'${fich%.*}' (adresse, rue) values '> adress_text.csv
        
        #permet d'inserer les données de adress1_coordonnee1.txt dans adress_text.csv tout en gardant en mémoire les valeurs déja inscrites dans ce fichier.
        cat adress1_${fich%.*}.txt >> adress_text.csv
        
        #permet de supprimer les retours chariots du fichier adress_text.txt puis de tout mettre dans un fichier adress1_text.csv
        tr -d '\r\n' < adress_text.csv > adress1_text.csv
        
        
        sed 's/)(/), (/g' adress1_text.csv > adress2_text.csv
        sed 's/)*$/);" | mysql founisseur/g' adress2_text.csv > adress3_text.csv
        
        
        echo -e '\n' >> adress3_text.csv
        cat adress3_text.csv >> ADRESSE_FINAL_${fich%.*}.sql
        
        
        #permet de supprimer définitivement les fichiers intermédiaires générés après l'éxécution du script sans les mettre dans la poubelle. Il ne restera que ADRESSE_FINAL.sql
        rm adress3_${fich%.*}.txt
        rm adress2_${fich%.*}.txt
        rm adress1_${fich%.*}.txt
        rm adress_text.csv
        rm adress1_text.csv
        rm adress2_text.csv
        rm adress3_text.csv
        
        else
        
        fi
        
        done
        }
        
        0
        1. Modérateur
          Alors... dans :
          grep -q "mot_à_chercher" fichier
          il faut remplacer "mot_à_chercher" par le mot dont tu veux tester la présence et "fichier" par "$fich". Sans quoi forcément ça marche pas ;-((
          0
          1. Salut,

            j'ai fait comme indiqué, mais le fichier ne se lance pas. En faite, il n'aime pas la condition ifet les arguments qui lui sont propre
            0
            1. Modérateur
              Affiche ton script revu et corrigé.

              Affiche un extrait d'un fichier contenant le mot_clé recherché et un extrait d'un fichier ne contenant pas le mot_clé recherché.

              Merci.
              0
              1. Voici un extrait contenant le mot clé: P330

                !#CODE P330
                !#
                Nom: M. Dumont
                address 33 
                rue Av du Gnl De Gaulle
                
                Nom: Mme 
                address 167 
                rue Place Alésia
                Ville Paris
                
                Nom: M. Dumont
                address 10 
                rue impasse du bois


                et voici le même fichier sans le mot clé

                !#
                address 33 
                rue Av du Gnl De Gaulle
                
                address 167 
                rue Place Alésia
                
                address 10 
                rue impasse du bois
                
                0
                1. Modérateur
                  [tmpfs]$ cat plop
                  !#CODE P330
                  !#
                  Nom: M. Dumont
                  address 33
                  rue Av du Gnl De Gaulle
                  
                  Nom: Mme
                  address 167
                  rue Place Alésia
                  Ville Paris
                  
                  Nom: M. Dumont
                  address 10
                  rue impasse du bois
                  
                  
                  [tmpfs]$ cat plop2
                  !#
                  address 33
                  rue Av du Gnl De Gaulle
                  
                  Nom: Mme
                  address 167
                  rue Place Alésia
                  Ville Paris
                  
                  Nom: M. Dumont
                  address 10
                  rue impasse du bois
                  
                  
                  [tmpfs]$ cat foo.sh
                  #! /bin/sh
                  
                  #set -xv
                  
                  for fich in plop*; do
                  
                  grep -q "P330" ${fich}
                  if [ "$?" = "0" ]
                  then
                  echo "Le fichier ${fich} contient bien le mot clé."
                  else
                  echo "Le fichier ${fich} ne contient pas le mot clé."
                  fi
                  done
                  
                  
                  [tmpfs]$ ./foo.sh
                  Le fichier plop contient bien le mot clé.
                  Le fichier plop2 ne contient pas le mot clé.
                  
                  [tmpfs]$
                  ;-))
                  0