Quelle est la différence entre l'utilisation d'une variable d'environnement, telle que PATH, comme $ PATH ou $ {PATH}?
Répondre
Il n'y a pas de différence dans la plupart des cas. Les seules fois où cela est important, c'est si vous voulez inclure du texte final après l'expansion. Par exemple, supposons que votre PATH
contenait la chaîne FOO
(pas réellement un chemin valide, mais ceci est un exemple), et que vous vouliez former la chaîne FOOBAR
. Si vous avez
$PATHBAR
Vous obtiendrez l'expansion de la variable nommée PATHBAR
, ce qui est probablement pas ce que vous vouliez. Si vous avez
$PATH BAR
Vous obtiendrez un espace entre FOO
et BAR
, pas non plus ce que vous vouliez. La solution consiste à utiliser des accolades:
${PATH}BAR
Cela vous donne FOOBAR
.
PATH
est le nom de la variable d'environnement, $PATH
et ${PATH}
sont des méthodes d'accès. Le formulaire ${PATH}
est utilisé pour autoriser des constructions comme echo ${PATH}b
qui échoueraient en utilisant $PATHb
. En outre, bash
permet beaucoup de choses de remplacement de paramètres dont le man page vous en dira volontiers plus au sujet de.
Dans votre cas, il n'y a pas de différence, mais - prendre la situation: Vous avez deux variables:
$FOO = "YA"
$YADA = "bar"
alors ${$FOODA}
va vous rien en ${${FOO}DA}
vous donnera donner « bar »
'$ FOO = "YA"' est incorrect - il ne fait pas ce que vous pensez qu'il fait. Vous devez faire 'FOO - = "YA"' –
Non, $ {$ {FOO} DA} vous donnera une erreur de syntaxe, mais eval '$' {$ {FOO} DA} donnera le contenu de $ YADA. ..si vous attribuez à FOO correctement. –
ce que fait le 'b' après' $ {PATH} 'veut dire? – mk12
Il mettra un "b" littéral après PATH au lieu d'accéder à une variable d'environnement nommée PATHb. Essayez-le vous-même. –