Bonjour,
le code suivant me permet de récupérer une liste de fichiers associés.
et importFichier.sh test l'existence du fichier ($FIC_CSV correspond au deuxième paramètre) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 mysql -u $mysql_user --password=$mysql_pass -e "select concat(SOU_FICHIER_SQL, '!', SOU_FICHIER_CSV) from sys_source;" -D mabdd -B -s 2> /dev/null \ | while read nom do ficSql=`echo $nom | cut -f1 -d!` ficCsv=`echo $nom | cut -f2 -d!` echo $ficSql - $ficCsv /.../importFichier.sh "$ficSql" "$ficCsv" done
Le problème est que les fichiers contenant des caractères accentués ne sont pas trouvés. Un ls m'affiche bien les fichiers avec caractères accentués dans leur nom. importFichier.sh donne le résultat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 echo "Arguments CSV : " $2 if [ -e "$FIC_CSV" ] ; then echo Le ficher $FIC_CSV existe else echo Le ficher $FIC_CSV n existe pas exit 2 fi
J'ai donc essayé de supprimer les accents avec le script suivant :Arguments CSV : R▒gles Hopital Bris de Glace + sp▒cificit▒s.csv
Le ficher /.../R▒gles Hopital Bris de Glace + sp▒cificit▒s.csv n existe pas
Cela donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for i in /.../*.csv do echo "nom actuel : "$i nouveau_nom=`echo "$i"|sed 'y/àâçéèêëîïôöùüûÀÇÉÈËÊÏÎÖÔÙÜÛ/aaceeeeiioouuuACEEEEIIOOUUU/'` echo "nouveau_nom : "$nouveau_nom done
La même commande directement dans la console donne le même résultat :nom actuel : /.../Règles Hopital Bris de Glace + spécificités.csv
sed: -e expression n▒1, caract▒re 85: les cha▒nes destin▒es ▒ la commande `y' ont des longueurs diff▒rentes
nouveau_nom :
Les deux chaînes "àâçéèêëîïôöùüûÀÇÉÈËÊÏÎÖÔÙÜÛ" et "aaceeeeiioouuuACEEEEIIOOUUU" ont pourtant la même longueur contrairement à ce qu'indique le message d'erreur.bash-3.2$ ls R*
Règles Hopital Bris de Glace + spécificités.csv
bash-3.2$ echo "Règles Hopital Bris de Glace + spécificités.csv"|sed y/àâçéèêëîïôöùüûÀÇÉÈËÊÏÎÖÔÙÜÛ/aaceeeeiioouuuACEEEEIIOOUUU
sed: -e expression n▒1, caract▒re 85: les cha▒nes destin▒es ▒ la commande `y' ont des longueurs diff▒rentes
-bash: echo: write error: Relais bris▒ (pipe)
Je soupçonne un paramétrage de Linux d'être la source de ce problème. Savez-vous ce qui ne va pas ?
Partager