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

shell里的getopts

发布时间:2020-12-15 09:13:51 所属栏目:安全 来源:网络整理
导读:getopts是shell的一个内置命令。 概述 getopts optstring name [ args ] OPTIND,OPTARG,OPTERR 描述 getopts被shell程序用来分析位置参数, optstring 包含需要被识别的选项字符,如果这里的字符后面跟着一个冒号,表明该字符选项需要一个参数,参数需要以空

getopts是shell的一个内置命令。

概述

getoptsoptstringname[args]
OPTIND,OPTARG,OPTERR

描述

getopts被shell程序用来分析位置参数,optstring包含需要被识别的选项字符,如果这里的字符后面跟着一个冒号,表明该字符选项需要一个参数,参数需要以空格分隔。冒号和问号不能被用作选项字符。

getopts每次被调用时,它会将下一个选项字符放置到变量name上,若name不存在则会进行初始化。

变量OPTIND是下一个要被处理的位置参数的索引,初始值为1。shell不会自动的复位OPTIND,如果想再次对位置参数进行分析,则需要手动对OPTIND进行复位。

当选项需要参数时,getopts将参数放置在变量OPTARG中,

当所有的位置参数分析结束,getopts退出并返回一个大于0的值,OPTIND变为首个不是选项的位置参数的索引,name被置为'?'。

默认情况下getopts会去分析传入的位置参数,但如果args有值,则只会分析args里的参数,args只支持形如-abc形式。

如果遇到错误,getopts会打印出错误信息,但如果optstring第一个字符是冒号,或者变量OPTERR被置为0(此项只是不打印错误信息,不会在出错后设置OPTARG的值),则会进入静默模式,不会打印错误信息。遇到的错误通常有两种情况:
1、无效的选项,此时name会被置为'?'。静默模式下,会将此无效选项置于OPTARG。非静默模式,打印错误信息,并且unset OPTARG。
2、选项需要的参数未提供,静默模式下,name会被置为':',无效选项会置于OPTARG。非静默模式,name被置为'?',unset OPTARG并打印出错信息。

getopts返回true(0)如果遇到一个选项(无论是否有效),返回false,如果遇到结束或者产生错误。

示例

示例来自参考【2】

#!/bin/sh
whilegetopts:ab:c:OPTION;do
case$OPTIONin
a)echo"get option a"
;;
b)echo"get option b and parameter is $OPTARG"
;;
c)echo"get option c and parameter is $OPTARG"
;;
?)echo"get a non option $OPTARG and OPTION is $OPTION"
;;
esac
done

一个运行实例

其中,-a和-b是正确的选项,-p和-c分别对应错误选项的两种情况。

转载自: 点击打开链接

(编辑:李大同)

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

    推荐文章
      热点阅读