带有所有可选参数的getopts

时间:2017-08-17 12:33:12

标签: linux bash getopts

为了运行bash脚本,我需要一些参数和标志,因为要求非常棘手,我选择使用像这样的getopt函数

while getopts ":s:g:r" o; do
    case "${o}" in
        s)
        # Variables that require value            
        VALUE1=${OPTARG}
        ;;
        g)
        # Variables that require value
        MGROUP=${OPTARG}
        ;;
        r)
        # Variables that, if present, set just a flag
        ASROOT=1
        ;;
        *)
        echo "Usage: ./myscript.sh -s value1 -g value2 -r"
        ;;
    esac
done

我想让所有参数都是可选的,所以我可以稍后在我的代码中写一些条件,前两个(s和g)带有参数,第三个(r)只是一个可选的标志。将来我可能需要添加额外的参数,总是可选的。 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

示例脚本说明了bash getopts的可选参数,其样式类似于mysql客户端。也支持“-”。

用法: script.sh [-u] [-p | -p] [-] arg1 arg2 ...

gcc ... -nostdinc ... -I./include ...

答案 1 :(得分:1)

可选参数是可选的,用于强制检查VALUE1MGROUP。例如:

[[ -n $VALUE1 && -n $MGROUP ]] || {
    echo "mandatory paramter missing"
    exit 1
}

getopts