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时退出(表示第一个参数)是一个非选项参数). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |