El 16/5/19 a les 16:49, Ernest Adrogué ha escrit:
> Em pensava que si feies una assignació de variable a línia d'ordres
> seguida d'una ordre, aquella assignació només tenia efecte per a l'ordre
> en qüestió.  Per exemple, segons això,
>
> $ foo=1 echo $foo
>
> hauria d'escriure "1".  Però estic veient que no fa l'assignació...
>
> Ha canviat recentment, o és que mai ha funcionat així?
>
> Salut

En aquest cas no funciona perquè la comanda echo no està realment
accedint a l'entorn sinó que és el propi shell qui fa la substitució
*abans* d'executar la comanda. O sigui, primer fa la substitució de la
variable $foo a l'entorn del shell (on no està definida), i després
passa a la comanda echo aquesta variable junt amb la resta de l'entorn
però que acaba ignorant perquè echo es limita a repetir el que rep per
paràmetres.

Una forma de veure-ho en funcionament és aquesta:

$ foo=1 env | grep ^foo=

Aquí igualment definim la variable foo i executem la comanda env, que
*sí* consulta el nou entorn i en retorna totes les variables, entre les
quals la foo que just hem definit.


Respondre per correu electrònic a