[转]linux getopts与shift学习笔记
2010-12-13 15:07
218 查看
原文地址 http://www.stuhack.com/linux/shell/908.html
获取UNIX类型的选项:
unix有一个优点就是标准UNIX命令在执行时都具有相同的命令行格式:
如果在执行Shell程序也采用上述格式,Bourne Shell中提供了一条获取和处理命令行选项的语句,即getopts语句。该语句的格式为:
其中option_string中包含一个有效的单字符选项。若getopts命令在命令行中发现了连字符,那么它将用连字符后面的字符同
option_string相比较。若有匹配,则把变量variable的值设为该选项。若无匹配,则variable设为?。当getopts发现连字
符后面没有字符,会返回一个非零的状态值。Shell程序中可以利用getopts的返回值建立一个循环。
有时侯选项中还带一个值,getopts命令同样也支持这一功能。这时需要在option_string中选项字母后加一个冒号。当
getopts命令发现冒号后,会从命令行该选项后读取该值。若该值存在,那么将被存在一个特殊的变量OPTARG中。如果该值不存在,getopts命
令将在OPTARG中存放一个问号,并且在标准错误输出上显示一条消息。
细则1:
当optstring以”:“开头时,getopts会区分invalid option错误和miss option argument错误。
invalid option时,varname会被设成?,$OPTARG是出问题的option;
miss option argument时,varname会被设成:,$OPTARG是出问题的option。
如果optstring不以”:“开头,invalid option错误和miss option argument错误都会使
varname被设成?,$OPTARG是出问题的option。
细则2:
当optstring中的字母跟”:“时,表明该option可接参数,参数(argument)放在$OPTARG中;
如果缺参数,且optstring是以”:“开头,则varname的值会是:,$OPTARG是该option,
否则varname的值是?,$OPTARG是该option。(参照细则1)
获取UNIX类型的选项:
unix有一个优点就是标准UNIX命令在执行时都具有相同的命令行格式:
command -options parameters
如果在执行Shell程序也采用上述格式,Bourne Shell中提供了一条获取和处理命令行选项的语句,即getopts语句。该语句的格式为:
getopts option_string variable
其中option_string中包含一个有效的单字符选项。若getopts命令在命令行中发现了连字符,那么它将用连字符后面的字符同
option_string相比较。若有匹配,则把变量variable的值设为该选项。若无匹配,则variable设为?。当getopts发现连字
符后面没有字符,会返回一个非零的状态值。Shell程序中可以利用getopts的返回值建立一个循环。
有时侯选项中还带一个值,getopts命令同样也支持这一功能。这时需要在option_string中选项字母后加一个冒号。当
getopts命令发现冒号后,会从命令行该选项后读取该值。若该值存在,那么将被存在一个特殊的变量OPTARG中。如果该值不存在,getopts命
令将在OPTARG中存放一个问号,并且在标准错误输出上显示一条消息。
optstring option字符串,会逐个匹配 varname 每次匹配成功的选项 arg 参数列表,没写时它会取命令行参数列表 $OPTIND 特殊变量,option index,会逐个递增, 初始值为1 $OPTARG 特殊变量,option argument,不同情况下有不同的值
细则1:
当optstring以”:“开头时,getopts会区分invalid option错误和miss option argument错误。
invalid option时,varname会被设成?,$OPTARG是出问题的option;
miss option argument时,varname会被设成:,$OPTARG是出问题的option。
如果optstring不以”:“开头,invalid option错误和miss option argument错误都会使
varname被设成?,$OPTARG是出问题的option。
细则2:
当optstring中的字母跟”:“时,表明该option可接参数,参数(argument)放在$OPTARG中;
如果缺参数,且optstring是以”:“开头,则varname的值会是:,$OPTARG是该option,
否则varname的值是?,$OPTARG是该option。(参照细则1)
--------------- $ # 传递到脚本的参数个数 $ * 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 $ $ 脚本运行的当前进程I D号 $ ! 后台运行的最后一个进程的进程I D号 $ @ 与$ #相同,但是使用时加引号,并在引号中返回每个参数 $ - 显示s h e l l使用的当前选项,与s e t命令功能相同 $ ? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 ------------ shift 用于重新分配位置参数,其实就是把向参数左移动一个位置如:$1<--$2,$2<--$3老的$1将被删 除掉。 ------------
相关文章推荐
- linux getopts 学习笔记
- linux getopts 学习笔记
- 【Linux学习笔记】Linux/UNIX系统标准数据类型
- 【linux学习笔记】 bash学习之变量内容的删除、取代与替换
- Linux学习笔记:解决因 /boot 分区空间不足导致的卸载旧内核失败
- Linux内核学习笔记九——内核内存管理方式
- linux 学习笔记(二)
- 【Linux】CentOS 学习笔记之二(命令)
- 程序怎么跑?(2)——linux课程学习笔记
- 菜鸟的Linux学习笔记之命令cp
- linux 设备驱动开发学习笔记(一):最简单的内核模块
- LINUX系统学习笔记管道符和作业控制 ,shell变量 , 环境变量配置文件
- Linux 内核服务学习笔记
- Linux学习笔记(一)
- Linux学习笔记0.0.1
- Linux 下网卡的配置(Linux学习笔记)
- Linux学习笔记(一)--linux安装
- Linux学习笔记7——linux中的静态库和动态库
- 【学习笔记】linux文件拓展名
- Linux学习笔记 (四)归档和压缩