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