簡體   English   中英

如何在bash中首先以任何帶有長可選或非可選參數的隨機順序使用getopts?

[英]How to use getopts in any random order with long optional or non-optional argument first in bash?

我有一個像

./sample.sh --add employeename -f firstname -a age -d detail
./sample.sh --add employeename  -a age -d detail -f firstname
./sample.sh --add employeename -d detail -f firstname
./sample.sh --del employeename
./sample.sh --update employeename -f firstname [age,detail are optional]

在這里,我怎么能對--add,--del,--update使用getopts而我不想使用getopt。 好的建議將不勝感激。

這些實際上是命令,而不是選項,因此應該是常規的位置參數:

./sample.sh add employeename -f firstname -a age -d detail
./sample.sh add employeename  -a age -d detail -f firstname
./sample.sh add employeename -d detail -f firstname
./sample.sh del employeename
./sample.sh update employeename -f firstname [age,detail are optional]

應該先到 然后可以使用特定於命令的選項集來解析其余選項。

cmd=$1
shift
case $cmd in
  add) do_add "$@" ;;
  del) do_del "$@" ;;
  update) do_update "$@" ;; 
  *) echo "Unrecognized command: $cmd"
     exit 1
     ;;
esac

do_add () {
    name=$1
    shift
    while getopts "f:a:d:" opt "$@"; do
      ...
    done
    ...
}

do_del () {
    ...
}

# etc

暫無
暫無

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

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