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

Shell Affectation de Valeurs à des variables dynamiques

20 réponses
Avatar
franck.darras
Bonjour,

Je souhaiterai affecter des valeurs =E0 des variables dynmaques. Pour
eviter un long discours, voici le code

[code]
TEST=3DVAR1
echo $TEST

VALEUR=3DmaValeur
echo $VALEUR

$TEST=3D$VALEUR
r=E9sultat obtenu -bash: VAR1=3DmaValeur: command not found
[/code]

Merci pour votre aide.
Franck

10 réponses

1 2
Avatar
lhabert
"TiChou" :

eval $TEST='$VALEUR'


Ah oui, c'est vrai. Je l'avais déjà vu en plus, et ça m'était complètement
sorti de la tête. Je devrais pas poster quand c'est l'heure d'aller
dormir...

$ VALEUR=$' SPACEnt TABn' SINGLE QUOTEn" DOUBLE QUOTEn` BACK QUOTE
nn LFnrn CRLFn'


Euh, je comprend pas. Chez moi, le shell trouve que c'est pas une phrase
complète, ce qui se comprend vu qu'il y a un « " », un « ` » et un « ' »
ouvrants imbriqués.

Avatar
lhabert
En fait il faut coller 8 «  » au lieu de deux...
Avatar
TiChou
Dans le message <news:dm5kuf$2b12$,
*Luc Habert* tapota sur f.c.o.l.configuration :

$ VALEUR=$' SPACEnt TABn' SINGLE QUOTEn" DOUBLE QUOTEn` BACK
QUOTE nn LFnrn CRLFn'


Euh, je comprend pas. Chez moi, le shell trouve que c'est pas une phrase
complète,


Oh ? Peut être alors un problème de copié/collé ?

ce qui se comprend vu qu'il y a un « " »,


Oui, mais il est à l'intérieur de simples quotes, donc pas de soucis.

un « ` »


Lui aussi.

et un « ' » ouvrants imbriqués.


Mais échappé par un backslash, donc pas de soucis non plus.

--
TiChou


Avatar
lhabert
"TiChou" :

$ VALEUR=$' SPACEnt TABn' SINGLE QUOTEn" DOUBLE QUOTEn` BACK
QUOTE nn LFnrn CRLFn'
ce qui se comprend vu qu'il y a un « " »,



Oui, mais il est à l'intérieur de simples quotes


Bein non : le «  » ne quote pas à l'intérieur des « ' », donc ton deuxième
« ' » ferme le truc.

un « ` »


Lui aussi.


Oui, lui aussi.

et un « ' » ouvrants imbriqués.


Mais échappé par un backslash, donc pas de soucis non plus.


Muf? Il y a un PEBKAC chez au moins l'un de nous deux, là :-)



Avatar
TiChou
Dans le message <news:dm5ln8$2ft2$,
*Luc Habert* tapota sur f.c.o.l.configuration :

$ VALEUR=$' SPACEnt TABn' SINGLE QUOTEn" DOUBLE QUOTEn` BACK
QUOTE nn LFnrn CRLFn'
ce qui se comprend vu qu'il y a un « " »,



Oui, mais il est à l'intérieur de simples quotes


Bein non : le « » ne quote pas à l'intérieur des « ' », donc ton
deuxième « ' » ferme le truc.


J'imagine que tu parlais ici du simple quote (avec tous ces quotes on en
perd son quotage :P). J'ai l'impression aussi que tu n'a pas remarqué qu'ici
il ne s'agissait pas ici d'une chaîne délimité par des simples quotes mais
d'une chaîne formée avec la syntaxe particulière $'chaîne'.

Je cite un extrait du man de bash :

Words of the form $'string' are treated spe-
cially. The word expands to string, with back-
slash-escaped characters replaced as specifed
by the ANSI C standard. Backslash escape
sequences, if present, are decoded as follows:
a alert (bell)
b backspace
e an escape character
f form feed
n new line
r carriage return
t horizontal tab
v vertical tab
backslash
' single quote
nnn the eight-bit character whose
value is the octal value nnn (one
to three digits)
xHH the eight-bit character whose
value is the hexadecimal value HH
(one or two hex digits)
cx a control-x character

De zsh :

A string enclosed between `$'' and `'' is pro-
cessed the same way as the string arguments of
the print builtin, and the resulting string is
considered to be entirely quoted. A literal
`'' character can be included in the string by
using the `'' escape.

--
TiChou




Avatar
TiChou
Dans le message <news:dm5ln8$2ft2$,
*Luc Habert* tapota sur f.c.o.l.configuration :

$ VALEUR=$' SPACEnt TABn' SINGLE QUOTEn" DOUBLE QUOTEn` BACK
QUOTE nn LFnrn CRLFn'
ce qui se comprend vu qu'il y a un « " »,



Oui, mais il est à l'intérieur de simples quotes


Bein non : le « » ne quote pas à l'intérieur des « ' », donc ton
deuxième « ' » ferme le truc.


J'imagine que tu parlais ici du simple quote (avec tous ces quotes on en
perd son quotage :P). J'ai l'impression aussi que tu n'a pas remarqué qu'ici
il ne s'agissait pas d'une chaîne délimitée par des simples quotes mais
d'une chaîne formée avec la syntaxe particulière $'chaîne'.

Je cite un extrait du man de bash :

Words of the form $'string' are treated spe-
cially. The word expands to string, with back-
slash-escaped characters replaced as specifed
by the ANSI C standard. Backslash escape
sequences, if present, are decoded as follows:
a alert (bell)
b backspace
e an escape character
f form feed
n new line
r carriage return
t horizontal tab
v vertical tab
backslash
' single quote
nnn the eight-bit character whose
value is the octal value nnn (one
to three digits)
xHH the eight-bit character whose
value is the hexadecimal value HH
(one or two hex digits)
cx a control-x character

De zsh :

A string enclosed between `$'' and `'' is pro-
cessed the same way as the string arguments of
the print builtin, and the resulting string is
considered to be entirely quoted. A literal
`'' character can be included in the string by
using the `'' escape.

--
TiChou




Avatar
Nicolas George
Luc Habert wrote in message <dm5k2a$28qm$:
C'est qui?


Un des piliers de fcou. Groupe que je m'étonne que tu ne sois pas encore
allé hanter, d'ailleurs...

Avatar
Christophe PEREZ
Le Fri, 25 Nov 2005 01:01:46 +0000, Nicolas George a écrit:

Un des piliers de fcou. Groupe que je m'étonne que tu ne sois pas encore
allé hanter, d'ailleurs...


Il y en a donc un qui a suivi ;-)


--
Christophe PEREZ
Écrivez moi sans _faute !

Avatar
lhabert
"TiChou" :

J'imagine que tu parlais ici du simple quote (avec tous ces quotes on en
perd son quotage :P). J'ai l'impression aussi que tu n'a pas remarqué qu'ici
il ne s'agissait pas d'une chaîne délimitée par des simples quotes mais
d'une chaîne formée avec la syntaxe particulière $'chaîne'.


Je ne connaissais pas. Ce n'est pas du sh standard, j'imagine?

Avatar
TiChou
Dans le message <news:dm6r4s$1qse$,
*Luc Habert* tapota sur f.c.o.l.configuration :

J'ai l'impression aussi que tu n'a pas remarqué qu'ici il ne s'agissait
pas d'une chaîne délimitée par des simples quotes mais d'une chaîne
formée avec la syntaxe particulière $'chaîne'.


Je ne connaissais pas. Ce n'est pas du sh standard, j'imagine?


Je ne pense pas, mais je ne suis pas un spécialiste des standards. Il
faudrait poser la question sur fr.comp.os.unix. Ça fonctionne en tout cas
avec les shells zsh, bash et sash.

fu2 fr.comp.os.unix

--
TiChou


1 2