#!/usr/bin/env bash
# plik receptury: getopts_custom
#
# wykorzystanie polecenia getopts z własnymi komunikatmi o błędach
#
aflag=
bflag=
# instrukcja getopts nie powinna generować, błędów
# ale musi dostarczać własne komunikaty, messages,
# dlatego do listy opcji został dodany początkowy znak ':'
#             v---tutaj
while getopts :ab: FOUND
do
    case $FOUND in
    a)    aflag=1
          ;;
    b)    bflag=1
          bval="$OPTARG"
          ;;
    \:)   printf "brak parametru dla opcji -%s\n" $OPTARG
          printf "Użycie: %s: [-a] [-b wartość] parametry\n" $(basename $0)
          exit 2
          ;;
    \?)   printf "nieznana opcja: -%s\n" $OPTARG
          printf "Użycie: %s: [-a] [-b wartość] parametry\n" $(basename $0)
          exit 2
          ;;

  esac >&2

done
shift $(($OPTIND - 1))

if [ "$aflag" ]
then
    printf "Opcja -a wprowadzona\n"
fi
if [ "$bflag" ]
then
    printf 'Opcja -b "%s" wprowadzona\n' "$bval"
fi
printf "Pozostałe parametry: %s\n" "$*"
