getopts

Getopts zbiera opcje linii komend. Jego przydatność odczuwa się w miarę pisania coraz bardziej rozbudowanych skryptów czy programów, które wykonują różne czynności. Postaram się opisać tym razem z czym to się je, może w przyszłości opiszę różnicę getopts i getopt.

Podstawy

Getopts jest wbudowanym poleceniem w powłokę. Na początek taki mały przykładowy kod:

#!/bin/bash
while getopts hsf: opcja
do
 case $opcja in
  h)
   echo "help"
   ;;
  s)
   echo "opcja s"
   ;;
  f)
   echo "opcja z argumentem: $OPTARG"
   ;;
 esac
done

Taki program możemy wywołać z opcjami -h, -s, -f test albo nawet -shf test czy też inne kombinacje.

~/dev/bash $ ./test.sh -hsf test
help
opcja s
opcja z argumentem: test

Składnia

getopts opcje nazwa
W przypadku opcji podajemy pojedyncze litery (getopts nie obsługuje długich opcji) i ewentualnie za opcją dopisujemy dwukropek (“:”). Oznacza on, że opcja wymaga argumentu. Spróbujcie wywołać wyżej pokazany kod z opcja -f bez podania argumentu do niej. Co widzicie? No właśnie, błąd ;)
Nazwa to nic innego jak zmienna, którą wykorzystamy niżej w case aby przetworzyć otrzymane opcje.