Le 28 avr. 2012 à 16:52, David BERCOT a écrit :
> Le Sat, 28 Apr 2012 13:18:15 +0200,
> Pierre Malard <p...@teledetection.fr> a écrit :
>> Le 27 avr. 2012 à 17:07, David BERCOT a écrit :
>>> Dans un script, je travaille sur des fichiers qui ont, dans leurs
>>> noms complets (répertoire + nom de fichier), des blancs et d'autres
>>> caractères spéciaux. Ceci me pose bien évidemment des problèmes sur
>>> certains traitements.
>>> 
>>> Je me demandais s'il existait une fonction de base qui permette de
>>> transformer le nom initial en nom... utilisable. Par exemple,
>>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>>> d'installation De/*.vmdk
>>> serait transformé en
>>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038\ -\ Test\
>>> d\'installation\ De/*.vmdk [oui, c'est de l'ESX ;-)]
>>> 
>>> Si vous avez une piste, je suis preneur (dans mon exemple, il y a à
>>> la fois des blancs et une apostrophe, mais j'imagine qu'il existe
>>> d'autres caractères bizarres).
>> 
>> Je ne sais pas si ça peut répondre, mais as-tu essayé de simplement
>> "quoter" ces noms de fichiers dans ton shell-script ? Attention de ne
>> quoter que ce qui peut poser de problème et de ne pas oublier les
>> accolades pour référencer les variables.
> 
> En effet, c'est ce que j'ai essayé de faire de manière générale et ça
> marche plutôt bien.
> 
> Par contre, ça ne marche pas pour :
> ssh $nomESX "ls -l \"`dirname \"$pathVM\"`/*.vmdk\""
> 
> D'ailleurs, si je ne dis pas de bêtises, même en mettant le nom du
> répertoire de manière "protégée", ça ne fonctionne pas non plus...
> 
> En fait, avec cette ligne, ça ne marche que si le répertoire n'a pas de
> caractère bizarre (blanc par exemple) et qu'il n'est justement pas
> entre double quote.
> 
> Je dois avoir une erreur quelque part...

Ça y est, j'ai trouvé !

J'avais pensé que c'était l'utilisation d'un autre shell que BASH ou vous 
proposer de remonter d'un répertoire avant de lancer le "ssh", ou vous proposer 
d'utiliser "$()" plutôt que les classiques "back-quotes" mais c'était beaucoup 
plus simple.

Vous avez "quoté" le "/*.vmdk". Hors, puisque l'étoile est fournie "quotée" au 
shell qui lance le "ls", il ne l'interprète pas et demande au "ls" de lister un 
fichier dont le nom est réellement "*.vmdk". il vous suffit de déplacer ceci 
comme ça :
        ssh $nomESX "ls -l \"`dirname \"$pathVM\"`\"/*.vmdk"

J'ai essayé chez moi, ça marche parfaitement :-)

Cordialement

----
Pierre Malard
      « Les utopies ne sont souvent que des vérités prématurées »
                                          Alphonse de Lamartine
   |\      _,,,---,,_
   /,`.-'`'    -.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)


perl -e '$_=q#: 3|\ 5-,3-3,2-: 3/,`.'"'"'`'"'"' 5-.  ;-;;,-:  |,A-  ) )-,_. ,\ 
(  `'"'"'-'"'"': '"'"'-3'"'"'2(-/--'"'"'  `-'"'"'\-): 
22PLM::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: 
http://lists.debian.org/ca3d5443-7236-417c-a321-74519e036...@teledetection.fr

Répondre à