2009-09-12 9 views
3

Quelle est la différence entre l'utilisation d'une variable d'environnement, telle que PATH, comme $ PATH ou $ {PATH}?

Répondre

12

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.

4

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.

+0

ce que fait le 'b' après' $ {PATH} 'veut dire? – mk12

+1

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. –

0

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 »

+1

'$ FOO = "YA"' est incorrect - il ne fait pas ce que vous pensez qu'il fait. Vous devez faire 'FOO - = "YA"' –

+0

Non, $ {$ {FOO} DA} vous donnera une erreur de syntaxe, mais eval '$' {$ {FOO} DA} donnera le contenu de $ YADA. ..si vous attribuez à FOO correctement. –