Atribuição temporária antes do comando não funcionar? [duplicado]

0

Eu esperava que a fosse algo após a atribuição inicial. Mas eu não entendo nada.

tomas@tomas-Latitude-E4200:~$ echo $a

tomas@tomas-Latitude-E4200:~$ a=0 echo $a

tomas@tomas-Latitude-E4200:~$

Comportamento inesperado semelhante quando a é definido antes.

tomas@tomas-Latitude-E4200:~$ a=0
tomas@tomas-Latitude-E4200:~$ a=1 echo $a
0

Bem?

    
por Tomasz 01.12.2016 / 20:33

1 resposta

3

As atribuições temporárias de variáveis de ambiente entram em vigor durante a execução do comando, não antes. Em particular, eles ainda não são eficazes durante a análise da linha de comando. Considere os dois comandos a seguir para ilustração:

$ A=1 sh -c "echo $A"

$ A=1 sh -c 'echo $A'
1

A diferença entre os comandos de exemplo é que no primeiro comando as substituições de variáveis acontecem antes sh -c , e no segundo elas acontecem durante a execução de sh -c .

Tecnicamente, o shell adiciona as atribuições de variáveis temporárias ao ambiente do processo filho; eles não são adicionados ao ambiente do shell.

    
por 01.12.2016 / 20:42

Tags