在getopts中,用户可以指定我们在代码中引入的所有选项。给出以下脚本。
while getopts d:s o
do case "$o" in
d) seplist="$OPTARG";;
s) paste=hpaste;;
[?]) print >&2 "Usage: $0 [-s] [-d seplist] file ..."
exit 1;;
esac
done
不应允许用户同时指定选项-d和-s.ie。
当用户同时使用-d和-s选项运行上面的脚本时,他应该会收到一个错误,不能同时指定-d和-s。
最佳答案
一个简单的实现是维护一个$OPTION_COUNT
:
OPTION_COUNT=0
while getopts d:s o
do case "$o" in
d) seplist="$OPTARG"; (( OPTION_COUNT ++ );;
s) paste=hpaste; (( OPTION_COUNT ++ );;
[?]) print >&2 "Usage: $0 [-s] [-d seplist] file ..."
exit 1;;
esac
done
if [ "$OPTION_COUNT" -gt 1 ]; then echo "too many options"; fi