¿Qué hace la salida de echo $-1
, echo $-2
, echo $-3
.. significa?
En uno de mis cuadros de Linux, me muestra:
echo $-1
imsBEl1
echo $-2
imsBEl2
Y en otra caja de Linux, muestra:
echo $-1
himBH1
echo $-2
himBH2
¿Están asignando a algunas ubicaciones de memoria o alguna otra cosa?
Respuestas:
POSIX definió $ - como:
Entonces,
$-
puede ser una base diferente en su shell o cómo lo invoca.1
o2
son fichas separadas aquí. Cuando el shell vea entre comillas$
, identificará el inicio de cualquier candidato para la expansión de parámetros, sustitución de comandos o expansión aritmética. Lo vio$-
y lo expandió, dejó el resto sin cambios.Puedes ver la sección de Reconocimiento de tokens para más detalles.
fuente
echo $-
Imprime las opciones del shell actual (sin-
prefijo).1
y2
son tokens adicionales no relacionados.fuente
Agregando a la respuesta de Miroslav:
Esto significa que estas son las opciones, para cada máquina, respectivamente.
Investigué el significado de cada bandera y compilé los significados a continuación, con una pequeña paráfrasis.
fuente
Para ampliar las respuestas existentes, intente
echo "${-1}"
yecho "${-2}"
obtendrá un error de "Sustitución incorrecta" porque, en lugar de usar-1
como nombre de variable, el guión se usa para sustituir un valor si el nombre de la variable antes no está definido. Por ejemplo:fuente