Przejdź do głównej zawartości

getopts


  • getopts – wbudowana funkcja powłoki (bash, ksh, zsh), umożliwiająca łatwe przetwarzanie opcji przekazanych do skryptu (np. -a, -b, -f plik).
  • Działa w pętli while, analizując przekazane argumenty w sposób zbliżony do narzędzi POSIX.
  • Obsługuje opcje jednoznakowe oraz ich parametry; nie wspiera długich opcji (--help, --version).

Okno terminala
getopts optstring zmienna
  • optstring – lista dozwolonych opcji (np. abf:f wymaga argumentu).
  • zmienna – zmienna, w której przechowywana jest aktualnie przetwarzana opcja.

ElementOpis
optstringŁańcuch zawierający znaki opcji; : po znaku oznacza, że wymaga argumentu
$OPTINDIndeks następnego analizowanego argumentu (domyślnie 1)
$OPTARGArgument opcji, jeśli wymagany (np. nazwa pliku dla -f plik)
getoptsFunkcja wywoływana w pętli while do analizy argumentów

#!/bin/bash
while getopts "abf:" opcja; do
case "$opcja" in
a) echo "Wybrano opcję A" ;;
b) echo "Wybrano opcję B" ;;
f) echo "Wybrano plik: $OPTARG" ;;
*) echo "Użycie: $0 [-a] [-b] [-f plik]" ; exit 1 ;;
esac
done
  • "abf:"a i b to opcje bez argumentów, f wymaga argumentu.
  • getopts automatycznie analizuje $@, a $OPTIND wskazuje bieżącą pozycję.
  • Użytkownik wywołuje skrypt np. ./skrypt.sh -a -f dane.txt.

  • getopts przetwarza wyłącznie opcje jednoznakowe (nie --help).
  • Argumenty pozycyjne po opcjach dostępne są przez ${@:$OPTIND}.
  • Gdy opcja wymaga argumentu, musi być on osobnym tokenem (-f plik.txt a nie -fplik.txt).
  • Aby rozpocząć analizę od początku, można zresetować $OPTIND=1.

Błąd / KomunikatPrzyczynaRozwiązanie
Błędna analiza opcjiNiewłaściwa składnia optstringUpewnij się, że użyto : dla opcji wymagających argumentu
$OPTARG pustyBrak przekazanego argumentuSprawdź, czy użytkownik podał wartość po opcji (np. -f plik)
Opcje ignorowaneBrak getopts w pętli whileUpewnij się, że getopts wywoływane jest poprawnie w strukturze while