Getopts更多选项触发一个事件

时间:2017-08-01 09:58:39

标签: bash shell getopts

我目前正在更新我写的打印室时间表的第一个脚本 我现在想用getopts来解析我的选项:

我的选项是打印所有房间的时间表:

    第二天
  • -w

  • -e打印星期一星期一的时间表

  • -c当天

  • -O具有给定的偏移量

到目前为止一切顺利。

不,我只想打印一个房间,其中包含以下选项:

  • -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 个答案:

答案 0 :(得分:0)

您可以简单地定义变量ONE_ROOM,如果给出选项r,则变量设置为true。您不需要手动区分所有可能的参数组合。

#!/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