Le Sat, 28 Apr 2012 21:36:39 +0200,
Pierre Malard <p...@teledetection.fr> a écrit :
>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 :-)

En effet, chez moi ça marche aussi...
Merci pour ce bon conseil.

David.

--
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/20120429112803.1453073d@debian-david

Répondre à