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

parametres, `cat`, ``, ...

6 réponses
Avatar
Thomas
bonjour :-)

désolé, je sais pas trop comment appeler ce fil



je faisais

commande -parametres -param "`commande --parametres`"


ça exécutais

commande -parametres -param 'resultat commande'



je voudrais mettre les paramètres dans un fichier séparé, pour pouvoir
les gérer plus facilement


alors je fais

commande `cat fichier-parametres`

avec fichier-parametres qui contient

-parametres -param "`commande --parametres`"


mais ça exécute

commande -parametres -param '"`commande' '--parametres`"'

au lieu de

commande -parametres -param 'resultat commande'



comment est ce qu'il faudrait que je fasse ?

--
Téléassistance / Télémaintenance
http://www.portparallele.com/ThomasDECONTES/

6 réponses

Avatar
Olivier Miakinen
Le 22/06/2009 21:06, Thomas a écrit :

je faisais

commande -parametres -param "`commande --parametres`"



Je crois avoir lu ici même qu'il vaut mieux utiliser :
commande -parametres -param "$(commande --parametres)"

je voudrais mettre les paramètres dans un fichier séparé, pour pouvoir
les gérer plus facilement



Sauf erreur, ça devrait donc donner :
commande -parametres -param "$(commande $(cat fichier-parametres))"

... mais je compte sur les gourous de ce forum pour me reprendre si
jamais je me fourvoyais.


Cordialement,
--
Olivier Miakinen
Avatar
Manuel Pégourié-Gonnard
Olivier Miakinen scripsit:

Le 22/06/2009 21:06, Thomas a écrit :

je faisais

commande -parametres -param "`commande --parametres`"



Je crois avoir lu ici même qu'il vaut mieux utiliser :
commande -parametres -param "$(commande --parametres)"



Je crois avoir lu ici aussi que le seul argument en faveur de $(...)
était la lisiblité (quand je dis le seul, je ne dis pas qu'il est
négligeable, je dis qu'il n'y en a pas d'autre). Par contre, je crois
avoir lu ailleurs que `...` était plus portable.

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Avatar
Cyrille Lefevre
Manuel Pégourié-Gonnard a écrit :
Olivier Miakinen scripsit:

Le 22/06/2009 21:06, Thomas a écrit :
je faisais

commande -parametres -param "`commande --parametres`"


Je crois avoir lu ici même qu'il vaut mieux utiliser :
commande -parametres -param "$(commande --parametres)"



Je crois avoir lu ici aussi que le seul argument en faveur de $(...)
était la lisiblité (quand je dis le seul, je ne dis pas qu'il est
négligeable, je dis qu'il n'y en a pas d'autre). Par contre, je crois
avoir lu ailleurs que `...` était plus portable.





Bonjour,

la lisibilité est un détail, essaye :

echo $(foo $(bar $(foobar foo bar) foo) bar)

avec des `, bon courage.

pour répondre à la question initiale, eval est ton ami, soit :

eval commande $(cat fichier-parametres)

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Avatar
Thomas
In article ,
Cyrille Lefevre <cyrille.lefevre-news%
wrote:

Manuel Pégourié-Gonnard a écrit :
> Olivier Miakinen scripsit:
>
>> Le 22/06/2009 21:06, Thomas a écrit :
>>> je faisais
>>>
>>> commande -parametres -param "`commande --parametres`"
>> Je crois avoir lu ici même qu'il vaut mieux utiliser :
>> commande -parametres -param "$(commande --parametres)"
>>
> Je crois avoir lu ici aussi que le seul argument en faveur de $(...)
> était la lisiblité (quand je dis le seul, je ne dis pas qu'il est
> négligeable, je dis qu'il n'y en a pas d'autre). Par contre, je crois
> avoir lu ailleurs que `...` était plus portable.
>


Bonjour,

la lisibilité est un détail, essaye :

echo $(foo $(bar $(foobar foo bar) foo) bar)

avec des `, bon courage.



eval 'echo' '`eval' 'echo' '`echo' '\`echo' 'nn\`' '`'
'`'

ah oui, la lisibilité :o)


pour répondre à la question initiale, eval est ton ami, soit :

eval commande $(cat fichier-parametres)



merci :-)



juste une petite question annexe :

j'ai mis -x
et quand j'exécute

eval 'echo' '`echo' '`echo' '`echo' 'nn`' '`' '`'

ça me donne

+ eval echo '`echo' '`echo' '`echo' 'nn`' '`' '`'
+++++ echo nn
++++ echo nn
+++ echo nn
++ echo nn
nn

j'ai l'impression qu'il fait 50 fois le dernier écho, mais pas ceux
intermédiaires
c'est normal ?


+ eval echo '`eval' echo '`echo' '\`echo' 'nn\`' '`'
'`'
+++ eval echo '`echo' '`echo' 'nn`' '`'
++++++ echo nn
+++++ echo nn
++++ echo nn
++ echo nn
nn

bizarre ...
enfin c'est accessoire, puisque ça donne le bon résultat :-)

--
Téléassistance / Télémaintenance
http://www.portparallele.com/ThomasDECONTES/
Avatar
Yves Lambert
Olivier Miakinen wrote:
Le 22/06/2009 21:06, Thomas a écrit :
je faisais

commande -parametres -param "`commande --parametres`"



Je crois avoir lu ici même qu'il vaut mieux utiliser :
commande -parametres -param "$(commande --parametres)"

je voudrais mettre les paramètres dans un fichier séparé, pour pouvoir
les gérer plus facilement



Sauf erreur, ça devrait donc donner :
commande -parametres -param "$(commande $(cat fichier-parametres))"



Oui mais non. Avec un clavier français, c'est plus pratique à taper :)
mais selon le système ça revient en fait au même. Un `command` est vu
comme un $(command) en faisant un ps si elle est dans une autre commande
(un for, ou autres) du moins c'est ce que j'ai constaté sous netbsd avec
sh, sous linux et bash le for n'apparait pas :/. La question était me
semble-t-il que le back-quote engendrerait un sous-shell or sous linux
ni le back-quote ni le $(...) n'aparaissent quand on fait un ps, et la
commande lancée avec bash est sur le shell d'appel dans chaque cas, pas
dans un sous-shell.
Pour bien voir que c'est kifkif, sous linux :

:~$ echo $(ps ax|grep tty1)
6065 tty1 R+ 0:00 -bash 6066 tty1 R+ 0:00 ps ax 6143 tty1 Ss 0:00
/bin/login --
32488 tty1 S+ 0:00 -bash
:~$ echo `ps ax|grep tty1`
6070 tty1 R+ 0:00 -bash 6071 tty1 R+ 0:00 ps ax 6143 tty1 Ss 0:00
/bin/login --
32488 tty1 S+ 0:00 -bash

Amusant, sous NetBSD, avec bash, un sous-shell est invoqué dans les deux
cas (back-quote ou dollar parenthèse)

... mais je compte sur les gourous de ce forum pour me reprendre si
jamais je me fourvoyais.



Bah, je ne suis pas un gourou, je dis simplement que c'est kif kif, et
je le prouve :

En fait avec
commande1 `commande2`
ou
commande1 $(commande2)

bash n'appelle commande1 que quand il a ses arguments, donc après que
commande2 se soit terminée (logique).

--
Welcome to U1 2521 days up
the Message of the Day is up to date.
To get it, strike "cat /etc/motd" then <return>
u1:~$ _
_
Avatar
Olivier Miakinen
Le 23/06/2009 20:38, Yves Lambert a écrit :

Sauf erreur, ça devrait donc donner :
commande -parametres -param "$(commande $(cat fichier-parametres))"



Oui mais non. Avec un clavier français, c'est plus pratique à taper :)
mais selon le système ça revient en fait au même.



Ah ?

Et donc, tu écrirais :
commande -parametres -param "`commande `cat fichier-parametres``"
?

[...]

Bah, je ne suis pas un gourou, je dis simplement que c'est kif kif, et
je le prouve :

En fait avec
commande1 `commande2`
ou
commande1 $(commande2)

bash n'appelle commande1 que quand il a ses arguments, donc après que
commande2 se soit terminée (logique).



Ben oui, mais là n'est pas la question. Bien sûr, que les deux écritures
sont fonctionnellement équivalentes quand il n'y a qu'un seul niveau,
d'ailleurs les deux syntaxes sont traitées en même temps dans la man de
bash.

La question, c'est :
commande1 $(commande2 $(commande3))

--
Olivier Miakinen