Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bash : quelques petites questions...

18 réponses
Avatar
David BERCOT
Bonjour,

Je viens de reprendre un script qui travaille sur des serveurs ESX et,
apr=C3=A8s y avoir pass=C3=A9 deux jours, je pense qu'il est temps que je
demande un peu d'aide ;-)

Bref, je souhaite faire un traitement sur l'ensemble (ou presque) des
fichiers vmdk de mes VM. Pour cela, je partais sur quelque chose du
genre :
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=C3=AEt dans le r=C3=A9sultat ! Je ne
comprends pas bien pourquoi... Je ne devrais avoir, de mon point de
vue, que les lignes correspondantes...

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=C3=A0, il me r=C3=A9pond : ash: syntax error: "|" unexpected
Je suppose que les deux commandes devraient =C3=AAtre un peu isol=C3=A9es m=
ais je
ne vois pas comment...

J'ai d'autres probl=C3=A8mes mais je pense que, pour commencer, si
j'obtenais quelques indices sur ces premiers probl=C3=A8mes, ce serait d=C3=
=A9j=C3=A0
un bon d=C3=A9but.

Merci d'avance pour toutes les pistes que vous pourrez m'indiquer.

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-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20120504141408.2b8795fa@debian-david

10 réponses

1 2
Avatar
JF Straeten
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 ?



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 ?

Hih,

--

JFS.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
David BERCOT
Le Fri, 4 May 2012 14:20:13 +0200,
"JF Straeten" 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és ultats
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ée s 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.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Bruno Richard
--e89a8f646d15faf75404bf36fb53
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

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 cou rant
d'interpreter
les caractères spéciaux et notamment `et $
les ` permettent d'exécuter la commande ls /tmp et de renvoyer son résu ltat
au for.

Bruno


Le 4 mai 2012 16:40, David BERCOT a écrit :

Le Fri, 4 May 2012 14:20:13 +0200,
"JF Straeten" 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 dan s 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ésulta ts
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 ma is
>> 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.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/





--e89a8f646d15faf75404bf36fb53
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

bonjour,<div><br></div><div>et avec une syntaxe de ce style ?</div><div>ssh serveur &#39;for i in `ls /tmp/`;do echo $i;done&#39;</div><div><br></div> <div>les &#39; permettent de banaliser les caractères i.e. empêcher le shell courant d&#39;interpreter</div>
<div>les caractères spéciaux et notamment `et $</div><div>les ` permett ent d&#39;exécuter la commande ls /tmp et de renvoyer son résultat au f or.</div><div><br></div><div>Bruno</div><div><br><br><div class="gmail_qu ote">Le 4 mai 2012 16:40, David BERCOT <span dir="ltr">&lt;<a href="mai lto:" target="_blank"></a>&gt;</span> a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1p x #ccc solid;padding-left:1ex">Le Fri, 4 May 2012 14:20:13 +0200,<br>
&quot;JF Straeten&quot; &lt;<a href="mailto:">jfstra </a>&gt; a écrit :<br>
&gt;Re,<br>
&gt;On Fri, May 04, 2012 at 02:14:08PM +0200, David BERCOT wrote:<br>
&gt;[...]<br>
&gt;&gt; ssh mon_serveur_esx &quot;for monfile in ls<br>
&gt;&gt; &quot;/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test<br>
&gt;&gt; d&#39;installation De&quot;/*.vmdk ; do echo &quot;${monfile}& quot; ; done&quot;<br>
&gt;<br>
&gt;&gt; Premier souci : la commande ls apparaît dans le résultat ! Je ne<br>
&gt;&gt; comprends pas bien pourquoi...<br>
&gt;<br>
&gt;Ne serait-ce pas plutôt :<br>
&gt;for monfile in $(ls MesVdmk.*)<br>
&gt;do<br>
&gt;...<br>
&gt;done<br>
&gt;pour distribuer ta boucle sur *ce que renvoie* d&#39;ls ?<br>
<br>
Alors, tout d&#39;abord, le &quot;ls&quot; est effectivement superflu dans ma<br>
première écriture (c&#39;est d&#39;ailleurs pour ça qu&#39;il est pr ésent dans le<br>
résultat).<br>
Après, je suis d&#39;accord sur l&#39;écriture for monfile in $()..., s auf<br>
qu&#39;il faut protéger le $. Mais bizarrement, il me renvoie les résul tats<br>
découpés dès qu&#39;il voit un blanc !<br>
<br>
Exemple :<br>
<br>
ssh mon_serveur_esx &quot;for monfile in<br>
&quot;/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test<br>
d&#39;installation De&quot;/*.vmdk ; do echo &quot;${monfile}&quot; ; d one&quot;<br>
<br>
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test<br>
d&#39;installation De/s47z038 - Test d&#39;installation<br>
De-flat.vmdk<br>
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test<br>
d&#39;installation De/s47z038 - Test d&#39;installation De.vmdk<br>
<br>
ssh mon_serveur_esx &quot;for monfile in $(ls<br>
&quot;/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test<br>
d&#39;installation De&quot;/*.vmdk) ; do echo &quot;${monfile}&quot; ; done&quot;<br>
<br>
/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038<br>
-<br>
Test<br>
d&#39;installation<br>
De/s47z038<br>
-<br>
Test<br>
d&#39;installation<br>
De-flat.vmdk<br>
[...]<br>
<br>
&gt;&gt; Ensuite, je souhaiterais supprimer certaines lignes en ajoutant un <br>
&gt;&gt; grep :<br>
&gt;&gt; ssh <a href="http://esx-supp-02.cnin.insee.fr" target="_blank" >esx-supp-02.cnin.insee.fr</a> &quot;for monfile in ls<br>
&gt;&gt; &quot;/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test<br>
&gt;&gt; d&#39;installation De&quot;/*.vmdk | grep -v 00000 ; do echo<br>
&gt;&gt; &quot;${monfile}&quot; ; done&quot;<br>
&gt;&gt; Là, il me répond : ash: syntax error: &quot;|&quot; unexpected <br>
&gt;&gt; Je suppose que les deux commandes devraient être un peu isolée s mais<br>
&gt;&gt; je ne vois pas comment...<br>
&gt;<br>
&gt;En corrigeant ci-dessus, ça devrait améliorer le grep aussi, non ?< br>
&gt;<br>
&gt;C&#39;est mieux ?<br>
<br>
Comme je n&#39;ai pas encore tout corrigé ;-)<br>
<span class="HOEnZb"><font color="#888888"><br>
David.<br>
<br>
--<br>
Lisez la FAQ de la liste avant de poser une question :<br>
<a href="http://wiki.debian.org/fr/FrenchLists" target="_blank">http:// wiki.debian.org/fr/FrenchLists</a><br>
<br>
Pour vous DESABONNER, envoyez un message avec comme objet &quot;unsubscribe &quot;<br>
vers <a href="mailto:">debian- </a><br>
En cas de soucis, contactez EN ANGLAIS <a href="mailto: ebian.org"></a><br>
Archive: <a href="http://lists.debian.org/ david" target="_blank">http://lists.debian.org/ bian-david</a><br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div><br>< div></div><br>
</div>

--e89a8f646d15faf75404bf36fb53--

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/CA+M“Ow3Vxcs8MvumQjEvDBZjUR1AkPNKcRuDYN2QNaZqy+
Avatar
David BERCOT
Le Fri, 4 May 2012 16:46:23 +0200,
Bruno Richard 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 sh ell
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 c hoses 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 ég alement
découpé dès qu'il y a un blanc dans la réponse...

David.

Bruno

Le 4 mai 2012 16:40, David BERCOT a écrit :

Le Fri, 4 May 2012 14:20:13 +0200,
"JF Straeten" 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.





--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
JF Straeten
Re,

On Fri, May 04, 2012 at 04:40:01PM +0200, David BERCOT wrote:

>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).



'tention... je croyais que le "ls" était simplifié dans l'exemple,
mais que tu utilisais en réalité des switches pour lister les fichiers
d'une manière particulière. (Genre ls -lth pour avoir une liste
longue, human readable et temporellement inversée.)

Si c'est juste un 'ls', alors oui, autant utiliser les jokers du shell
et ne pas lancer un sous-processus pour rien ;)


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 !



Mmmm... non, la construction avec $() (dollar + parenthèses) servait à
récupérer le résultat de la commande placée dedans. Pour protéger la
variable, il faut ${} (dollar + accolades). D'ailleurs, c'est ce que
tu fais ci-dessous :


ssh mon_serveur_esx "for monfile in
"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De"/*.vmdk ; do echo "${monfile}" ; done"



[...]

-
Test
d'installation
De/s47z038
-
Test
d'installation
De-flat.vmdk
[...]



Il y a des espaces dans les noms de tes .vmdk ?

Tu saurais coller un ls -l du répertoire qui les contient, avec le
path absolu ?

Il y a un truc que je ne pige pas à mon avis...

A+


--

JFS.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
JF Straeten
Re,

On Fri, May 04, 2012 at 04:46:23PM +0200, Bruno Richard wrote:

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.



Oui, ça fait la même chose que la construction "$()", recommandée en
bash si je me souviens bien (?).

Mais ici, je crois qu'on a deux niveaux de contrariété potentiels avec
les guillemets : la boucle est elle-même la commande passée à ssh...

Ça fait deux chances pour les guillemets/apostrophes de se faire
bouffer quelque part ;)

@David : tu ne sais pas scripter le traitement des .vmdk, et appeler
le script par ssh, pour voir ce que ça donne ?

A+

--

JFS.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
S
Salut,

Le vendredi 04 mai 2012 à 16:40, David BERCOT a écrit :
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 !



Tu peux jouer avec la variable IFS (le séparateur d'arguments), tu verras, c'est
marrant !

Les scripts en Shell, dès qu'il y a des espaces c'est la m**** !
Personnellement, j'utilise Perl (mais Python / Ruby / … feront l'affaire).

Seb

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
David BERCOT
Le Fri, 4 May 2012 16:58:12 +0200,
"JF Straeten" a écrit :
>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).



'tention... je croyais que le "ls" était simplifié dans l'exempl e,
mais que tu utilisais en réalité des switches pour lister les fi chiers
d'une manière particulière. (Genre ls -lth pour avoir une liste
longue, human readable et temporellement inversée.)

Si c'est juste un 'ls', alors oui, autant utiliser les jokers du shell
et ne pas lancer un sous-processus pour rien ;)



C'est le cas ;-)

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 !



Mmmm... non, la construction avec $() (dollar + parenthèses) servait à
récupérer le résultat de la commande placée dedans. Po ur protéger la
variable, il faut ${} (dollar + accolades). D'ailleurs, c'est ce que
tu fais ci-dessous :

ssh mon_serveur_esx "for monfile in
"/vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a/s47z038 - Test
d'installation De"/*.vmdk ; do echo "${monfile}" ; done"





Certes, mais là, c'est différent, non ?
Tu me proposes de remplacer $() par ${} ?
Du genre :

ssh mon_serveur_esx "for monfile in
${ls /vmfs/volumes/4f33a50e-0762c7f9-9763-001a6436484a} ; do echo
$monfile ; done" ?
Mhum, même avec différentes syntaxes, j'obtiens juste :
ash: syntax error: Bad substitution

[...]

-
Test
d'installation
De/s47z038
-
Test
d'installation
De-flat.vmdk
[...]



Il y a des espaces dans les noms de tes .vmdk ?



En effet :-(

Tu saurais coller un ls -l du répertoire qui les contient, avec le
path absolu ?



Euh oui, mais pourquoi ?

Il y a un truc que je ne pige pas à mon avis...



C'est peut-être aussi moi qui explique mal ;-)

@David : tu ne sais pas scripter le traitement des .vmdk, et appeler
le script par ssh, pour voir ce que ça donne ?



Tu veux dire, faire un script sur le serveur et l'appeler ensuite
directement ? C'est ce que m'a suggérer Basile en mp ;-)
Je pourrais, mais vu que j'ai plein de serveurs à traiter, ça ne me
convient pas trop.

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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Stephane Ascoet
Le vendredi 4 mai 2012 17:15:53, David BERCOT a ecrit :
>Il y a des espaces dans les noms de tes .vmdk ?

En effet :-(


Bonjour, c'est tres mal.
Et en suivant la piste de IFS? Tente "IFS=$'n';" en tete de la commande qui a
le moins mal fonctionne jusqu'a present
--
Bien cordialement, Stephane Ascoet

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Stephane Ascoet
Le vendredi 4 mai 2012 17:42:23, David BERCOT a ecrit :

Et comme résultat, j'ai des retours à la ligne à chaque "n " ;-) :



Il doit y avoir une erreur dans la syntaxe du IFS. C'est tire d'une astuce de
Denis Bodor dans GNU/LInux Magazine France Hors-Serie 34. Les petites faute s
de ce style sont helas frequentes :-(
Et sinon, il y a une liste speciale pour le scriptage pour eviter de pollue r
celle-ci...
--
Bien cordialement, Stephane Ascoet

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2