加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash getopts具有多个和强制性选项

发布时间:2020-12-15 19:53:46 所属栏目:安全 来源:网络整理
导读:是否可以使用getopts一起处理多个选项?例如,myscript -iR或myscript -irv。 此外,我有一种情况,基于条件脚本将需要强制选项。例如,如果脚本的参数是一个目录,我将需要指定-R或-r选项以及任何其他选项(myscript -iR mydir或myscript -ir mydir或myscrip
是否可以使用getopts一起处理多个选项?例如,myscript -iR或myscript -irv。

此外,我有一种情况,基于条件脚本将需要强制选项。例如,如果脚本的参数是一个目录,我将需要指定-R或-r选项以及任何其他选项(myscript -iR mydir或myscript -ir mydir或myscript -i -r mydir或myscript -i -R mydir),如果只有文件-i就足够了(myscript -i myfile)。

我试图搜索,但没有得到任何答案。

您可以连接您提供的选项,并且getopts将分隔它们。在您的案例陈述中,您将单独处理每个选项。

您可以在看到选项时设置标志,并检查以确保在getopts循环完成后存在强制“选项”(!)。

这里是一个例子:

#!/bin/bash
rflag=false
small_r=false
big_r=false

usage () { echo "How to use"; }

options=':ij:rRvh'
while getopts $options option
do
    case $option in
        i  ) i_func;;
        j  ) j_arg=$OPTARG;;
        r  ) rflag=true; small_r=true;;
        R  ) rflag=true; big_r=true;;
        v  ) v_func; other_func;;
        h  ) usage; exit;;
        ? ) echo "Unknown option: -$OPTARG" >&2; exit 1;;
        :  ) echo "Missing option argument for -$OPTARG" >&2; exit 1;;
        *  ) echo "Unimplemented option: -$OPTARG" >&2; exit 1;;
    esac
done

shift $(($OPTIND - 1))

if ! $rflag && [[ -d $1 ]]
then
    echo "-r or -R must be included when a directory is specified" >&2
    exit 1
fi

这表示getopts函数的完整参考实现,但只是较大脚本的草图。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读