Probleme passage d'argument

Résolu/Fermé
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 - 21 juin 2009 à 21:21
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 - 22 juin 2009 à 20:33
Bonjour,

j'ai un fichier .txt dont je ne connait pas le nom (appelons ADRESSE.txt ici)

j'ai le code suivant inscrit dans le fichier adresse.awk

#$ nl adress_coordonnee1.awk
{

for fich in *.txt; do

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

done
}


Lorsque je fais un crontab, il me sort un fichier portant le nom: ADRESSE_FINAL_*.sql au lieu de ADRESSE_FINAL_ADRESSE.sql dans le répertoire root

Mais lorsque je l'exécute via le terminal:

cd /home/test/nico
# ./adresse.awk

j'ai un fichier nommer ADRESSE_FINAL_ADRESSE.sql qui apparait dans mon répertoire test


Comment faire pour exécuter le fichier adresse.awk pour qu'il me sorte un fichier ADRESSE_FINAL_ADRESSE.sql avec un crontab ??


Merci

3 réponses

mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
22 juin 2009 à 01:45
Si ${fich%.*} (syntaxe que je ne connais pas, je veux bien que tu me dises ce que c'est sensé faire) contient à un endroit de ton script la valeur que tu souhaites, pourquoi ne pas simplement la stocker dans une variable et utiliser dans chacune de tes instructions cette variables ?

Bonne chance
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
22 juin 2009 à 11:13
Salut,

En faite la syntaxe ${fich%.*} me passe le nom ADRESSE dans le fichier .awk pour me sortir -quand sa marche- un fichier ADRESSE_FINAL_ADRESSE.sql.
0
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
22 juin 2009 à 20:33
Mais c'est le nom de ta variable ou fich%.* est sensé être interprété en quelque chose d'autre. Parce que là tu utilises un nom de variable avec des caractères spéciaux (d'où ma question, est ce une syntaxe spéciale ?) donc c'est et il y a de bonnes chances pour que ton problème vienne de là.
0