Podczas przeglądania jednego skryptu powłoki widziałem termin „$?”. Jakie jest znaczenie tego terminu?
linux
shell-script
Renjith G.
źródło
źródło
Odpowiedzi:
$?
rozwija się do statusu wyjścia ostatnio wykonywanego potoku pierwszego planu. Zobacz sekcję Parametry specjalne w podręczniku Bash .Mówiąc prościej, jest to status wyjścia ostatniego polecenia.
źródło
Odpowiedź Cjm jest poprawna, ale
$?
może być używana w niemądry sposób w skryptach powłoki i chciałbym ostrzec przed tym. Wiele złych skryptów powłoki ma powtarzający się wzór kodu:Jeśli to w ogóle możliwe (czasem dotyczy to czytelności), należy zakodować tę sytuację inaczej:
To ostatnie użycie jest szybsze, nie zanieczyszcza przestrzeni nazw zmiennych powłoki wielkościami zmiennymi temp, często może być o wiele bardziej czytelne dla ludzi i zachęca do stosowania „logiki pozytywnej”, praktyki pisania warunkowej bez negacji, która ma funkcje poznawcze prostota w większości sytuacji. W
$?
większości eliminuje to użycie .źródło
Oprócz tego, co powiedział cjm , jeśli wartość
$?
wynosi 0, to poprzedni proces zakończył się normalnie (lub pomyślnie). W przeciwnym razie wystąpił błąd.źródło
diff
kończy się z 0, jeśli porównywane pliki są takie same, z 1, jeśli są różne, a 2 oznacza błąd.$?
-Status wyjścia ostatniego wykonanego polecenia.$0
-Nazwa bieżącego skryptu.$#
- Liczba argumentów dostarczonych do skryptu.$$
-Numer procesu bieżącej powłoki. W przypadku skryptów powłoki jest to identyfikator procesu, w ramach którego są one wykonywane.źródło
$? podaj nam status wykonania ostatniego polecenia wykonania po znaku zachęty. Wartość „0” oznacza, że polecenie zostało wykonane pomyślnie, a „1” oznacza brak powodzenia.
źródło
$?
określa status wyjścia wykonanego polecenia.$
następnie liczby (na przykład$1
,$2
itp) przedstawia parametry w skrypcie.źródło