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

bash – 如果没有提供选项,有getopts显示帮助

发布时间:2020-12-15 22:36:21 所属栏目:安全 来源:网络整理
导读:我解析了一些类似的问题,但这些问题并不适合我. 我有这个很棒的bash脚本,可以执行一些很酷的功能,这里是代码的相关部分: while getopts ":hhelpf:d:c:" ARGS;do case $ARGS in h|help ) help_message 2 exit 1 ;; f ) F_FLAG=1 LISTEXPORT=$OPTARG ;; d ) D
我解析了一些类似的问题,但这些问题并不适合我.

我有这个很棒的bash脚本,可以执行一些很酷的功能,这里是代码的相关部分:

while getopts ":hhelpf:d:c:" ARGS;
do
    case $ARGS in
        h|help )
            help_message >&2
            exit 1
            ;;
        f )
            F_FLAG=1
            LISTEXPORT=$OPTARG
            ;;
        d )
            D_FLAG=1
            OUTPUT=$OPTARG
            ;;
        c )
            CLUSTER=$OPTARG
            ;;
        ? )
            echo ""
            echo "Unimplemented option: -$OPTARG" >&2
            echo ""
            exit 1
            ;;
        : )
            echo ""
            echo "Option -$OPTARG needs an argument." >&2
            echo ""
            exit 1
            ;;
        * )
            help_message >&2
            exit 1
            ;;
    esac
done

现在,如果触发,我的所有选项都运行良好.我想要的是getopts在没有触发选项时吐出help_message函数,比如脚本只是在没有参数的情况下启动./scriptname.sh.

我在这里看到了一些方法,实现了IF循环和函数,但是,因为我刚开始使用bash并且我已经在这个脚本上有一些IF循环,我想知道是否有一种更简单(和漂亮)的方法来这个.

解决方法

如果您只想检测没有选项调用的脚本,那么只需在脚本中检查$#的值,然后在消息为0时退出.

如果你想捕获没有传递选项参数的情况(但是非选项参数)仍然传递,那么你应该能够在getopts循环之后检查OPTIND的值,并在它为1时退出(表示第一个参数)是一个非选项参数).

(编辑:李大同)

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

    推荐文章
      热点阅读