getopt 检查互斥参数

  • 本文关键字:参数 getopt bash getopts
  • 更新时间 :
  • 英文 :


我有一个简单的脚本(下面),它有互斥的参数。

脚本的参数应该是./scriptname.sh -m|-d [-n]的,但是,用户可以运行脚本./scriptname.sh -m -d这是错误的。

问题:如何强制用户仅提供了一个互斥参数?

#!/bin/sh
usage() {
   cat <<EOF
Usage: $0 -m|-d [-n]
where:
    -m create minimal box
    -d create desktop box
    -n perform headless build
EOF
   exit 0
}
headless=
buildtype=
while getopts 'mdnh' flag; do
  case "$flag" in
    m) buildtype='minimal' ;;
    d) buildtype='desktop' ;;
    n) headless=1 ;;
    h) usage ;;
    ?) usage ;;
    *) usage ;;
  esac
done
[ -n "$buildtype" ] && usage

我可以想到两种方法:

接受类似-t <argument>可以desktopminimal参数的选项

因此,您的脚本将称为:

./scriptname.sh -t desktop -n

./scriptname.sh -t minimal -n

另一种方法是在脚本中强制执行验证,如下所示:

headless=
buildtype=
while getopts 'mdnh' flag; do
  case "$flag" in
    m) [ -n "$buildtype" ] && usage || buildtype='minimal' ;;
    d) [ -n "$buildtype" ] && usage || buildtype='desktop' ;;
    n) headless=1 ;;
    h) usage ;;
    ?) usage ;;
    *) usage ;;
  esac
done

相关内容

  • 没有找到相关文章

最新更新