Was bedeutet die Ausgabe von echo $-1
, echo $-2
, echo $-3
.. das?
Auf einer meiner Linux-Boxen zeigt es mir:
echo $-1
imsBEl1
echo $-2
imsBEl2
Und auf einer anderen Linux-Box zeigt es:
echo $-1
himBH1
echo $-2
himBH2
Mappen sie auf einige Speicherorte oder etwas anderes?
Antworten:
POSIX definiert $ - als:
So
$-
kann die Basis auf Ihrer Shell unterschiedlich sein oder wie Sie sie aufrufen.1
oder2
sind hier Token getrennt. Wenn die Shell kein Anführungszeichen sieht$
, wird der Start aller Kandidaten für die Parametererweiterung, die Befehlssubstitution oder die arithmetische Erweiterung identifiziert. Es sah$-
und erweiterte es, der Rest blieb unverändert.Sie können sehen , Token Recognition Abschnitt für weitere Details.
quelle
echo $-
druckt Optionen der aktuellen Shell (ohne-
Präfix).1
und2
sind zusätzliche nicht verwandte Token.quelle
Hinzufügen zu Miroslavs Antwort:
Dies bedeutet, dass dies die Optionen für jede Maschine sind.
Ich habe die Bedeutung jeder Flagge recherchiert und die unten stehenden Bedeutungen mit geringfügiger Umschreibung zusammengestellt.
quelle
Wenn Sie die vorhandenen Antworten erweitern möchten, versuchen Sie
echo "${-1}"
undecho "${-2}"
- es wird der Fehler "Falsche Ersetzung" angezeigt, da-1
der Bindestrich nicht als Variablenname verwendet wird, um einen Wert zu ersetzen, wenn der Variablenname zuvor nicht definiert wurde. Beispielsweise:quelle