Entiendo que las variables de shell son locales al shell actual mientras que las variables de entorno (la export
ed) se pasan a procesos secundarios bifurcados por el shell.
Cuando ejecuto Perl one-liner entre comillas dobles, puedo acceder a la variable de shell (local) desde el fork
proceso ed perl:
$ FOO=bar
$ perl -we "print qx"echo $FOO""
bar
¿Porqué es eso?
Respuestas
5 para la respuesta № 1Es debido a la interpolación de variable de shell en cadenas entre comillas dobles.
los $FOO
La variable se evalúa en el shell principal, en el que $FOO
tiene valor bar
- e interpolados en la cadena citada.
Por lo tanto, el código perl que realmente está ejecutando es:
print qx"echo bar"
4 para la respuesta № 2
Esto se debe a que tu shell traduce el contenido de $FOO
Antes de que sea presentado a Perl.
Si quieres usar esto $FOO
desde su entorno Perl, haga esto:
perl -we "print qx"echo $FOO""
El shell debe traducir $
dentro $
antes de pasarlo lejos