Getopts больше опций запускают одно событие

Сейчас я обновляю свой первый скрипт, который я написал для распечатки расписаний комнат. Я хочу использовать getopts, чтобы разобрать мои варианты, теперь мой вопрос:

Мои варианты для печати schdule для всех комнат:

  • -W на следующий день

  • -e распечатать расписание на понедельник в пятницу

  • -c текущий день

  • -О с заданным смещением

Все идет нормально.

Нет, я хочу напечатать только одну комнату со следующими параметрами:

  • -rw
  • -re
  • -rc
  • -RO

Как я могу управлять этим с getopts? Что-то вроде того?

while getopts :a:b:c:d:hP: ARG; do
  case $ARG in
    ab)  #set option "a"
      echo "-a used: $OPTARG"
      echo "OPT_A = $OPT_A"
      ;;
    cd)  #set option "b"
      echo "-b used: $OPTARG"
      echo "OPT_B = $OPT_B"
      ;;

Это возможно? Я надеюсь, вы понимаете, что я имею в виду...

1 ответ

Решение

Вы можете просто определить переменную ONE_ROOM который имеет значение true, если опция r дано. Вам не нужно вручную различать все возможные комбинации ваших аргументов.

#!/bin/bash

ONE_ROOM="0"

while getopts rwecO: ARG; do
  case $ARG in
    r) ONE_ROOM="1";;
    w) ;;
    e) ;;
    c) ;;
    O) ;;
  esac
done

if [ "$ONE_ROOM" -eq "1" ] ; then
  # print only one room
else
  # print all rooms
fi
Другие вопросы по тегам