¿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.1o2son 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).1y2son 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-1como 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