我有一个简单的脚本(如下),其中包含互斥的参数。
脚本的参数应为./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
getopts
上了? 它甚至在相关问题列表中。你也可以看看在bash shell脚本中使用getopts
获取长和短命令行选项。那涵盖了很多领域。 - Jonathan Leffler