Si bien el bash
aspecto se ha cubierto, su pregunta me hace pensar que ha encontrado esas variables en el perl
código.
$&
y $_
son variables especiales en perl
. Y se encuentran especialmente en el perl
código llamado desde el código de shell.
$_
es la variable predeterminada en la perl
que trabajan muchas funciones y operadores. Esa variable también es la variable predeterminada establecida por los operadores de entrada.
En:
perl -pe 'some-code' < some-input
Se ejecuta algún código para cada línea de alguna entrada, con la línea almacenada $_
y el contenido del $_
se imprime después de que se haya ejecutado algún código.
El s/regex/replacement/
operador trabaja $_
de manera predeterminada. Entonces a menudo encuentras cosas como:
perl -pe 's/foo/bar/'
Que es la abreviatura de:
perl -pe '$_ =~ s/foo/bar/'
(arriba, $_
en lo que respecta al shell es solo parte de un argumento literal pasado al perl
intérprete, no es una variable de shell. Ese argumento literal se pasa como perl
expresión ( -e
) a perl
, y es por perl
eso que se interpreta como un variable).
$&
es otra perl
variable especial que se expande a lo que coincida con el último operador coincidente ( m/.../
, s/.../.../
...).
Por ejemplo:
$ echo foo | perl -lne '
print "The last character in $_ is $&" if m/.$/'
The last character in foo is o
O:
$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r