我有一个简单的脚本(下面),它具有互斥的参数.
./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
Run Code Online (Sandbox Code Playgroud)
anu*_*ava 11
我可以想到两种方式:
接受-t <argument>
Where参数可以是desktop
或的选项minimal
所以你的脚本将被称为:
./scriptname.sh -t desktop -n
Run Code Online (Sandbox Code Playgroud)
要么
./scriptname.sh -t minimal -n
Run Code Online (Sandbox Code Playgroud)
另一种方法是在脚本中强制执行验证,如下所示:
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
Run Code Online (Sandbox Code Playgroud)