在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

09-10 05:27
查看更多