2017-08-01 60 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