Co oznacza wyjście echo $-1
, echo $-2
, echo $-3
.. znaczy?
Na jednym z moich Linux-ów pokazuje:
echo $-1
imsBEl1
echo $-2
imsBEl2
A na innym Linux-ie pokazuje:
echo $-1
himBH1
echo $-2
himBH2
Czy są one mapowane na niektóre lokalizacje pamięci lub coś innego?
Odpowiedzi:
POSIX zdefiniował $ - jako:
$-
Może więc być różna podstawa powłoki lub sposób jej wywołania.1
lub2
są tutaj oddzielnymi żetonami. Gdy powłoka nie wyświetli cudzysłowu$
, zidentyfikuje początek dowolnych kandydatów do interpretacji parametrów, podstawiania poleceń lub interpretacji arytmetycznej. Zobaczył$-
i rozwinął go, pozostawiając resztę bez zmian.Aby uzyskać więcej informacji, zobacz sekcję Rozpoznawanie tokenów.
źródło
echo $-
wypisuje opcje bieżącej powłoki (bez-
prefiksu).1
i2
są dodatkowymi niepowiązanymi żetonami.źródło
Uzupełnienie odpowiedzi Miroslava:
Oznacza to, że są to opcje odpowiednio dla każdej maszyny.
Zbadałem znaczenie każdej flagi i zestawiłem znaczenia poniżej, z niewielkimi parafrazami.
źródło
Aby rozwinąć istniejące odpowiedzi, spróbuj
echo "${-1}"
iecho "${-2}"
- pojawi się błąd „Nieprawidłowe podstawienie”, ponieważ zamiast używać-1
jako nazwy zmiennej myślnik służy do podstawienia wartości, jeśli nazwa zmiennej przed nią jest niezdefiniowana. Na przykład:źródło