===== getopts - analiza opcji z argumentów =====
''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 ...
==== Typowe użycie ====
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))
==== Wyjaśnienie składni ====
Pierwszy argument wywołania ''getopts'' (np. ''":ab:"'') to łancuch definiujący dozwolone opcje:
* litery bez dwukropka (np. ''a'') oznaczają opcje bez argumentów,
* litery z dwukropkiem (np. ''b:'') oznaczają opcje wymagające argumentu,
* dwukropek na początku ('' : '') wyłącza domyślne komunikaty o błędach.
Drugi argument to nazwa zmiennej (np. ''opt''), w której ''getopts'' zapisuje aktualnie przetwarzaną opcję.
==== Istotne zmienne ====
Zmienne ustawiane przez ''getopts'':
* ''$opt'' - aktualnie przetwarzana opcja.
* ''$OPTARG'' - argument opcji (jeśli dotyczy).
* ''$OPTIND'' - indeks następnego argumentu do przetworzenia.
==== Przykład działania ====
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
==== Zasoby online ====
* [[https://www.stackchief.com/tutorials/Bash%20Tutorial%3A%20getopts|Bash Tutorial: getopts]]
* [[https://bash-hackers.gabe565.com/howto/getopts_tutorial/|Small getopts tutorial]]