Tester présence variable dans fichier en shel
Résolu
cobra85
Messages postés
148
Statut
Membre
-
cobra85 Messages postés 148 Statut Membre -
cobra85 Messages postés 148 Statut Membre -
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
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
-
Salut,
Qu'entends-tu par "variable" ? Un mot dans un fichier ?grep -q "mot_à_chercher" fichier if [ "$?" = "0" ] then exécuter else ... fi
-
Salut,
oui, par variable je voulais dire un mot dans un fichier.
merci -
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 } -
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 ;-((
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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. -
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
-
[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]$;-))
-