getopts słuzy do analizy opcji i argumentów przekazywanych do skryptu lub funkcji.
Ułatwia przetwarzanie opcji w stylu Unix, np.:
./skrypt.sh -a -b x -c arg1 arg2 ... ./skrypt.sh -acbx arg1 arg2 ...
W skrypcie Bash, użycie getopts zwykle wygląda tak:
while getopts ":ab:" opt
do
case $opt in
a) echo "Opcja -a została wybrana"
;;
b) echo "Opcja -b z argumentem: $OPTARG"
;;
\?) echo "Nieznana opcja: -$OPTARG" >&2
;;
esac
done
shift $((OPTIND -1))
Pierwszy argument wywołania getopts (np. „:ab:”) to łancuch definiujący dozwolone opcje:
a) oznaczają opcje bez argumentów,b:) oznaczają opcje wymagające argumentu, : ) wyłącza domyślne komunikaty o błędach.
Drugi argument to nazwa zmiennej (np. opt), w której getopts zapisuje aktualnie przetwarzaną opcję.
Zmienne ustawiane przez getopts:
$opt - aktualnie przetwarzana opcja.$OPTARG - argument opcji (jeśli dotyczy).$OPTIND - indeks następnego argumentu do przetworzenia.Dla wywołania skryptu:
./skrypt.sh -a -b wartość arg1 arg2
wynikiem działania powyższego skryptu będzie:
Opcja -a została wybrana Opcja -b z argumentem: wartość
zaś pozostałe argumenty (arg1, arg2) po przesunięciu shift $((OPTIND-1)) będą dostępne jako $1 i $2.
Ten sam wynik zostanie uzyskany dla wywołania:
./skrypt.sh -abwartość arg1 arg2 Opcja -a została wybrana Opcja -b z argumentem: wartość
W przypadku podania niepoprawnej opcji:
./skrypt.sh -a -x arg1 arg2
wynikiem będzie:
Nieznana opcja: -x