/ / Variable de shell visible en una cita de Perl de doble cita: perl, shell

Variable de shell visible en doble cotización Perl one-liner - perl, shell

Entiendo que las variables de shell son locales al shell actual mientras que las variables de entorno (la exported) 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 forkproceso ed perl:

$ FOO=bar
$ perl -we "print qx"echo $FOO""
bar

¿Porqué es eso?

Respuestas

5 para la respuesta № 1

Es 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