Précision avant tout : je travaille sous cygwin
J'ai un petit souci avec sed et un comportement plutôt surprenant : je tente de remplacer les chemins cygwin en chemin windows (pour pouvoir appeler une appli windows depuis cygwin en lui passant en paramètre des chemins qu'elle puisse comprendre)
le but est donc de remplacer les /cygdrive/X/foo par X:\foo avec tous les '/' contenus dans foo remplacés par des '\'
Jusque là, rien de bien surprenant. Voilà un test que j'ai fait :
$ echo "/cygdrive/d/fooModule/foo.c" | sed -r "s/\/cygdrive\/([a-zA-Z])\/(.*)/\1:\/\2/" | sed -r "s/\//\\\\/g"
d:\fooModule\foo.c |
donc ca semble pour le moins ok, cependant, voilà, dès que je mets cette commande dans un fichier de commandes bash, il me jette une erreur.
voilà le fichier
#!/usr/bin/bash
while [[ $1 ]] ; do
echo "entree : $1"
arg=`echo $1 | sed -r "s/\/cygdrive\/([a-zA-Z])\/(.*)/\1:\/\2/"`
echo "passe 1 : $arg"
arg=`echo $arg | sed -r "s/\//\\\\/g"`
echo "passe 2 : $arg"
shift
done |
et le résultat de son appel :
slaurent@zsdev005 /cygdrive/d/.pm/bin
$ try "/cygdrive/d/fooModule/foo.c"
entree : /cygdrive/d/fooModule/foo.c
passe 1 : d:/fooModule/foo.c
sed: -e expression #1, char 8: unterminated `s' command
passe 2 : |
ce n'est donc pas vraiment concluant ... J'ai pensé à un problème de jeu de caractères (j'utilise un éditeur hors de cygwin) ou a des problèmes de retours chariot, mais apparamment, le problème n'est pas là ... Des idées ?
Edit : "fixed ze balise"
Message édité par theShockWave le 04-07-2005 à 12:28:43