Bonjour,

Je suis face à un petit soucis.
Je doit traiter des fichiers via un script. Ce script reçoit en paramètre le chemin complet du fichier mais comme une chaine de caractère.

Dison que mon Script s'appelle MonScript.sh, ça va donner ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
./test.sh "/home/user/dossier1/SousDossier/[blabla]blublu ABC (encore du texte).ext"
j'ai donc la possibilité d'avoir en vrac dans la chaine de caractère : des espaces, des crochets, des parenthèses bref tout un tas de chose qui vont foutre le bazar dans mon script par la suite.

En cherchant un peut j'ai trouvé cet example pour formater correctement ma chaine de caractères avec les caractères d'échappement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo "file"with"quotes( and 'simple').ex" | sed 's/\([\() '\''"]\)/\\\1/g'
Quand je l'utilise dans le shell avec mes fichiers non traités ça fonctionne correctement mais impossible de l'utiliser dans mon script.

J'ai essayé ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#!/bin/bash
 
CHEMINFICHIER=$1
 
CHEMINFICHIER=${echo '$CHEMINFICHIER' | sed 's/\([\() '\''"]\)/\\\1/g'}
echo "Chemin Propre $CHEMINFICHIER"
mais j'ai ce message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
./MonScript.sh: ligne5: ${echo '$CHEMINFICHIER' | sed 's/\([\() '\''"]\)/\\\1/g'} : mauvaise substitution
du coup je ne sais plus du tout quoi faire :
-- j'ai essayé de passer par un eval sans succès
-- j'ai essayé d'insérer des caractères d'échappement pareil ça merde....

Comme je ne m'y connais pas assez pour savoir ce que je fais de mal je me tourne vers vous...
si une âme charitable pouvait m'aider se serait génial....

Merci d'avance.