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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./test.sh "/home/user/dossier1/SousDossier/[blabla]blublu ABC (encore du texte).ext"
En cherchant un peut j'ai trouvé cet example pour formater correctement ma chaine de caractères avec les caractères d'échappement.
Quand je l'utilise dans le shell avec mes fichiers non traités ça fonctionne correctement mais impossible de l'utiliser dans mon script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "file"with"quotes( and 'simple').ex" | sed 's/\([\() '\''"]\)/\\\1/g'
J'ai essayé ça :
mais j'ai ce message d'erreur
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"
du coup je ne sais plus du tout quoi faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./MonScript.sh: ligne5: ${echo '$CHEMINFICHIER' | sed 's/\([\() '\''"]\)/\\\1/g'} : mauvaise substitution
-- 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.
Partager