2017-08-01 61 views
0

即时通讯目前正在更新我的第一个剧本我写的打印室时间表 我想使用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" 
     ;; 

这可能吗?我希望你明白我的意思......

回答

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 
+0

我会检查一下。谢谢。 – Nico

+0

乐于帮忙,欢迎来到Stack Overflow。如果此答案或任何其他人解决了您的问题,请将其标记为已接受。 –

+0

我没有标记,因为我忙于那些我甚至无法尝试的东西。 Easy Fix很奇怪为什么我自己无法想象它。完美的作品 – Nico