OVH Cloud OVH Cloud

Script bash

3 réponses
Avatar
sylvain.berthier_pas_de_spam
Bonjour,

Voici mon script resume =E0 l'essentiel:
#!/bin/bash

execute_command=3D"ls -l | wc -l"
echo Commande: $execute_command

#resultat=3D`ls -l | wc -l`
resultat=3D`$execute_command`

echo $resultat



Ceci ne fonctionne pas =E0 cause du caractere |. Si je l'enleve aucun
souci. Comment passer ce caractere | sachant que je veux passer par ma
variable execute_command.

Sylvain

3 réponses

Avatar
Raphaël SEBAN
Bonjour,

Voici mon script resume à l'essentiel:
#!/bin/bash

execute_command="ls -l | wc -l"
echo Commande: $execute_command

#resultat=`ls -l | wc -l`
resultat=`$execute_command`

echo $resultat



Ceci ne fonctionne pas à cause du caractere |. Si je l'enleve aucun
souci. Comment passer ce caractere | sachant que je veux passer par ma
variable execute_command.

Sylvain



bonjour,

tu ne peux malheureusement pas protéger un tube ("xxx | xxx" entre
guillemets doubles) sans lui faire perdre sa signification dans le shell.

il n'est donc possible d'obtenir ton traitement qu'en fractionnant les
commandes en commandes unitaires :

#!/bin/bash

cmd1="ls -l"
cmd2="wc -l"
cmd="$cmd1 | $cmd2"

echo Commande: $cmd

resultat=`$cmd1 | $cmd2`

echo $resultat

perso, je n'ai trouvé aucun moyen d'échapper le tube | une fois que ce
dernier a été protégé par des guillemets doubles (apparemment son code
caractère est modifié après ce traitement).

+++ de précisions en consultant 'man bash' rubrique PROTECTION dans une
console.

@+

Avatar
TiChou
Dans le message <news:432eb2b9$0$14358$,
*Raphaël SEBAN* tapota sur f.c.o.l.configuration :

execute_command="ls -l | wc -l"
resultat=`$execute_command`


tu ne peux malheureusement pas protéger un tube ("xxx | xxx" entre
guillemets doubles) sans lui faire perdre sa signification dans le shell.

il n'est donc possible d'obtenir ton traitement qu'en fractionnant les
commandes en commandes unitaires :


Mais si mais si, il suffit juste d'évaluer la chaîne avant.

resultat=`eval $execute_command`

Mais bon, je n'approuve pas pour autant le code du script et je n'ai pas
envie de le commenter.

--
TiChou


Avatar
Raphaël SEBAN
Dans le message <news:432eb2b9$0$14358$,
*Raphaël SEBAN* tapota sur f.c.o.l.configuration :

execute_command="ls -l | wc -l"
resultat=`$execute_command`




tu ne peux malheureusement pas protéger un tube ("xxx | xxx" entre
guillemets doubles) sans lui faire perdre sa signification dans le shell.



il n'est donc possible d'obtenir ton traitement qu'en fractionnant les
commandes en commandes unitaires :



Mais si mais si, il suffit juste d'évaluer la chaîne avant.

resultat=`eval $execute_command`


bon à savoir. Merci TiChou ;)


Mais bon, je n'approuve pas pour autant le code du script et je n'ai pas
envie de le commenter.