getopts命令

1. getopts

getopts 命令对一列使用指定预期标志和参数的格式的记号进行分析。标志是一个单一的 ASCII 字母,当其后跟有冒号时,预期会有一个参数,可能或可能不用一个或多个制表符或空格将此参数和标志分开。参数中可以包括多字节字符,但是不能作为标志字母。

getopts 命令读取完所有记号 即完成处理 ;或者当它遇到特殊标记-- (双连字符)或第一个非选项参数处,或是碰到错误时,会以非零值退出。

2. 命令格式

2.1. 语法

getopts option-spec variable [arguments…]

2.2. 参数

option_spec 用来描述选项及它们的参数,是一个合法选项字母的字符串。如果选项后面跟着冒号,则表示该选项需要一个参数,此参数必须提供。

variable   对于每个合法的选项,把选项值赋值给它。如果选项有一个参数,则参数值会赋值给OPTARG 。而另一个变量OPTIND 包含下一个需要处理的参数的索引值,Shell 会把该变量初始化为1

3. 使用用例

注意:将冒号(:) 置于选项字符串中作为第一个字符,可以使得getopts 以两种方式改变它的行为: 首先,它不会显示任何错误信息; 第二,除了将变量设置为问号之外,OPTARG 还包含了给定的不合法选项字母。以下便是选项处理循环的最后版本:

 

#设置标志变量为空 file= verbose= #开头的冒号,是我们处理错误的方式 case “$1” in start) OPTIND=2 while getopts :hf:v opt do case $opt in #检查选项字母 h) #显示该命令用法 echo “Usage:$0 {start|stop}–f [file] [-v]” exit 0; ;; f) file=$OPTARG ;; v) verbose=true ;; *) echo “error” exit 1 ;; esac done #脚本执行主体 stop) ;; esac  

 

你可能感兴趣的:(shell,脚本,File)