===== 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]]