Tester présence variable dans fichier en shel

Résolu/Fermé
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 - 10 juil. 2009 à 14:59
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 - 13 juil. 2009 à 14:09
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
A voir également:

9 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 juil. 2009 à 15:41
Salut,

Qu'entends-tu par "variable" ? Un mot dans un fichier ?
grep -q "mot_à_chercher" fichier
if [ "$?" = "0" ]
then exécuter
else ...
fi
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
10 juil. 2009 à 15:48
Salut,

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

merci
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
11 juil. 2009 à 18:58
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
11 juil. 2009 à 19:02
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
13 juil. 2009 à 13:16
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
13 juil. 2009 à 13:20
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
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
13 juil. 2009 à 13:47
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
13 juil. 2009 à 13:57
[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
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
13 juil. 2009 à 14:09
OK, merci beaucoup
0