Probleme passage d'argument

Résolu
cobra85 Messages postés 132 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   -
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
A voir également:

3 réponses

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
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   Statut Membre Dernière intervention   3
 
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 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
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