Parametr $? w Bash

Słownik kwalifikacji INF.02 - Administracja i eksploatacja systemów komputerowych, urządzeń peryferyjnych i lokalnych sieci komputerowych

Parametr $? w Bash

$? to specjalny parametr powłoki Bash, który przechowuje kod zakończenia ostatnio wykonanego polecenia. Jest często używany w skryptach Linux do sprawdzania, czy poprzednia komenda wykonała się poprawnie.

Co oznacza kod zakończenia?

W systemach Linux program po zakończeniu zwraca liczbę, nazywaną kodem wyjścia:

  • 0 — polecenie zakończyło się poprawnie,
  • wartość różna od 0 — wystąpił błąd lub nietypowa sytuacja.

Przykład

echo "Test"
echo $?

Pierwsze polecenie echo zwykle wykona się poprawnie, więc drugie polecenie wyświetli:

0

W pytaniu egzaminacyjnym występuje:

echo -n "To jest pewien parametr "
echo $?

Opcja -n powoduje, że echo nie przechodzi do nowej linii. Następnie echo $? wypisuje kod zakończenia poprzedniego polecenia, czyli echo -n. Najczęściej będzie to 0.

Wynik może wyglądać tak:

To jest pewien parametr 0

Ważne parametry specjalne w Bash

  • $? — kod zakończenia ostatniego polecenia,
  • $$ — numer PID bieżącej powłoki,
  • $! — PID ostatniego procesu uruchomionego w tle,
  • $# — liczba parametrów przekazanych do skryptu,
  • $* lub $@ — wszystkie parametry przekazane do skryptu.

Na egzaminie należy pamiętać: $? nie oznacza parametrów skryptu, tylko status ostatniej komendy.