簡體   English   中英

將多個選項組合成一個選項(Getopts)

[英]Combining multiple options into one single option (Getopts)

由於我缺乏對使用getopts的透徹了解,因此標題的名稱肯定是模糊的:0。 我目前正在編寫bash腳本,我想添加一個選項,該選項在getopts的case語句中輸出其他選項。 為了擴展,我縮短了程序。

#!/bin/bash

while getopts :abc opt
do
  case $opt in
       a) 
           echo "Hello"
           ;;
       b)
           echo "Goodbye"
       c)            
           :ab #****I WANT -c TO OUTPUT THE RESULTS OF a and b************
           ;;
esac
done

正如您在選項c中看到的那樣,我希望這個特定的選項(-c)可以同時顯示-a和-b的結果。 是否可以通過簡單地使c調用選項a和b來解決此問題?

您可以引入減少重復的功能,如下所示:

#!/bin/bash

do_a() {
  echo "Hello"
}

do_b() {
  echo "Goodbye"
}


while getopts :abc opt
do
  case $opt in
     a)
         do_a
         ;;
     b)
         do_b
         ;;
     c)    
         do_a
         do_b
         ;;
  esac
done

如果您使用的是Bash的最新版本,請使用;;代替case子句。 您可以使用特定於bash的;;&多種模式:

#!/bin/bash

while getopts :abc opt
do
    case $opt in
        a|c) 
            echo "Hello"
            ;;&
        b|c)
            echo "Goodbye"
            ;;&
    esac
done

和:

$ bash script.bash -a
Hello
$ bash script.bash -c 
Hello
Goodbye

使用';;&'代替';;' 使外殼測試下一個子句中的模式(如果有),並在成功匹配后執行任何關聯的命令列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM