[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bash : quelques petites questions...



Le Fri, 4 May 2012 16:46:23 +0200,
Bruno Richard <richard.brunooo@gmail.com> a écrit :
>bonjour,
>
>et avec une syntaxe de ce style ?
>ssh serveur 'for i in `ls /tmp/`;do echo $i;done'
>
>les ' permettent de banaliser les caractères i.e. empêcher le shell
>courant d'interpreter
>les caractères spéciaux et notamment `et $
>les ` permettent d'exécuter la commande ls /tmp et de renvoyer son
>résultat au for.

J'avais déjà essayé cette syntaxe. Indépendamment des choses qui ne
marchent pas (avec des ", ça ne fonctionne plus et j'en ai besoin pour
mes noms de répertoires avec des blancs), le résultat est également
découpé dès qu'il y a un blanc dans la réponse...

David.

>Bruno
>
>Le 4 mai 2012 16:40, David BERCOT <debian@bercot.org> a écrit :
>
>> Le Fri, 4 May 2012 14:20:13 +0200,
>> "JF Straeten" <jfstraeten@scarlet.be> a écrit :
>> >Re,
>> >On Fri, May 04, 2012 at 02:14:08PM +0200, David BERCOT wrote:
>> >[...]
>> >> ssh mon_serveur_esx "for monfile in ls
>> >> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> >> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
>> >
>> >> Premier souci : la commande ls apparaît dans le résultat ! Je ne
>> >> comprends pas bien pourquoi...
>> >
>> >Ne serait-ce pas plutôt :
>> >for monfile in $(ls MesVdmk.*)
>> >do
>> >...
>> >done
>> >pour distribuer ta boucle sur *ce que renvoie* d'ls ?
>>
>> Alors, tout d'abord, le "ls" est effectivement superflu dans ma
>> première écriture (c'est d'ailleurs pour ça qu'il est présent dans le
>> résultat).
>> Après, je suis d'accord sur l'écriture for monfile in $()..., sauf
>> qu'il faut protéger le $. Mais bizarrement, il me renvoie les
>> résultats découpés dès qu'il voit un blanc !
>>
>> Exemple :
>>
>> ssh mon_serveur_esx "for monfile in
>> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De\"/*.vmdk ; do echo \"\${monfile}\" ; done"
>>
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De/s47z038 - Test d'installation
>> De-flat.vmdk
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De/s47z038 - Test d'installation De.vmdk
>>
>> ssh mon_serveur_esx "for monfile in \$(ls
>> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> d'installation De\"/*.vmdk) ; do echo \"\${monfile}\" ; done"
>>
>> /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038
>> -
>> Test
>> d'installation
>> De/s47z038
>> -
>> Test
>> d'installation
>> De-flat.vmdk
>> [...]
>>
>> >> Ensuite, je souhaiterais supprimer certaines lignes en ajoutant un
>> >> grep :
>> >> ssh esx-supp-02.cnin.insee.fr "for monfile in ls
>> >> \"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
>> >> d'installation De\"/*.vmdk | grep -v 00000 ; do echo
>> >> \"\${monfile}\" ; done"
>> >> Là, il me répond : ash: syntax error: "|" unexpected
>> >> Je suppose que les deux commandes devraient être un peu isolées
>> >> mais je ne vois pas comment...
>> >
>> >En corrigeant ci-dessus, ça devrait améliorer le grep aussi, non ?
>> >
>> >C'est mieux ?
>>
>> Comme je n'ai pas encore tout corrigé ;-)
>>
>> David.


Reply to: