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.

