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

Evaluer les variables d'une chaine lue par read

5 réponses
Avatar
Tittom
Bonjour

Plutot que des mots longs, voici ce que j'essaie de faire :

[debut de code]
>animal=3D"chien"
>echo $animal
chien
>read phrase
Mon animal est un $animal
>echo $phrase
Mon animal est un $animal
[fin de code]

J'aimerai obtenir "Mon animal est un chien" lorsque je fais "echo
$phrase".
Je ne comprends pas pourquoi $animal n'est pas "=E9valu=E9".

Merci pour votre aide !

PS : je suis sur Solaris, en bash.

5 réponses

Avatar
Tittom
Pardon, je me corrige car j'ai été imprécis, ci-dessous ce que je veux
faire plus exactement.

J'observe ceci :
[debut de code]
read phrase
Mon animal est un $animal

echo $phrase
Mon animal est un $animal

animal="chien"
echo $animal
chien

echo $phrase
Mon animal est un $animal

[fin de code]

Alors que je veux obtenir cela :
[debut de code]
read phrase
Mon animal est un $animal

echo $phrase
Mon animal est un

animal="chien"
echo $animal
chien

echo $phrase
Mon animal est un chien

[fin de code]


En espérant que ce sera plus clair !

T.

Avatar
Sébastien Monbrun aka TiChou
Dans le message
<news:,
*Tittom* tapota sur f.c.o.unix :

animal="chien"
echo $phrase
Mon animal est un $animal


J'aimerai obtenir "Mon animal est un chien" lorsque je fais "echo
$phrase".
Je ne comprends pas pourquoi $animal n'est pas "évalué".


Parce que justement la variable phrase n'a pas été évalué.

Donc, évaluons là :

$ eval echo "$phrase"

--
Sébastien Monbrun aka TiChou


Avatar
Pascal Bourguignon
"Tittom" writes:

Bonjour

Plutot que des mots longs, voici ce que j'essaie de faire :

[debut de code]
animal="chien"
echo $animal
chien

read phrase
Mon animal est un $animal

echo $phrase
Mon animal est un $animal

[fin de code]

J'aimerai obtenir "Mon animal est un chien" lorsque je fais "echo
$phrase".
Je ne comprends pas pourquoi $animal n'est pas "évalué".


Parce que tu ne l'as pas évalué!

[ tmp]$ animal=chien
[ tmp]$ echo $animal
chien
[ tmp]$ read phrase
Mon animal est un $animal
[ tmp]$ echo $phrase
Mon animal est un $animal
[ tmp]$ eval "echo $phrase"
Mon animal est un chien
[ tmp]$

--
__Pascal Bourguignon__ http://www.informatimago.com/

HEALTH WARNING: Care should be taken when lifting this product,
since its mass, and thus its weight, is dependent on its velocity
relative to the user.


Avatar
Tittom
On 16 fév, 15:33, Sébastien Monbrun aka TiChou
wrote:
J'aimerai obtenir "Mon animal est un chien" lorsque je fais "echo
$phrase".
Je ne comprends pas pourquoi $animal n'est pas "évalué".


Parce que justement la variable phrase n'a pas été évalué.

Donc, évaluons là :

$ eval echo "$phrase"


Effectivement ça change tout !
Capito, merci.


Avatar
lhabert
Enfin bon, c'est du suicide de compter là-dessus. Dès que tu auras un « ` »,
un « ; » ou un « * » dans ta phrase, le ciel va te tomber sur la tête.