Bonjour,

le code suivant me permet de récupérer une liste de fichiers associés.
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
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
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
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 :
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
J'ai donc essayé de supprimer les accents avec le script suivant :
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
Cela donne :
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 :
La même commande directement dans la console donne le même résultat :
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)
Les deux chaînes "àâçéèêëîïôöùüûÀÇÉÈËÊÏÎÖÔÙÜÛ" et "aaceeeeiioouuuACEEEEIIOOUUU" ont pourtant la même longueur contrairement à ce qu'indique le message d'erreur.

Je soupçonne un paramétrage de Linux d'être la source de ce problème. Savez-vous ce qui ne va pas ?