Shell:用条件参数getopts命令行参数,怎么做?

时间:2016-09-02 17:05:14

标签: shell command-line getopts

我想用getopts解析一个参数,这需要设置另外两个解析参数。

这样的事情,如果-l设置为yes:

sh name.sh -l yes -a "bla" -b "blubb"

然后需要将参数-a和-b设置为。否则可以省略这些论点。

sh name.sh -l no

我的getopts案例如下:

    while getopts ":l:a:b:" o; do
    case "${o}" in
        l)
            l=${OPTARG}
            (( $l == "Y" || $l == "y" )) || usage;;
        a)
            a=${OPTARG}
            (( $a == "bla" || $a == "blubb" )) || usage;;
        b)
            b=${OPTARG};;
        :)
            echo "Missing option argument for -$OPTARG" >&2; exit 1;;
        *)
            usage;;
    esac
done
shift $((OPTIND-1))

if [ -z "${l}" ] || [ -z "${a}" ] || [ -z "${b}" ] ;
then
    usage
fi

但是就像现在一样,-a和-b是必需的输入,我不知道如何将它们遗漏在-l被设置为no的情况下,所以它们不必是进入。就像我打电话给他们看上面提到的那样。 感谢:)

0 个答案:

没有答案