使用 getopts 处理命令行参数
2015-08-11 17:05
483 查看
标准的 LINIX 命令在执行时都具有相同的命令行格式
果在执行Shell程序也采用上述格式,Bourne Shell中提供了一条获取和处理命令行选项的语句,即getopts语句。该语句的格式为:
getopts 允许把选项堆叠在一起。如(-ab a、b两个选项都会执行)
如要带参数,须在对应选项后加 :(如h后需加参数 h:ms)。此时选项和参数之间至少有一个空白字符分隔,这样的选项不能堆叠。
当 options 以 “:” 开头时,getopts 会区分 invalid option 错误 和 miss option argument 。
invalid option 时, variable 会被设成 "?" ,$OPTARG 是出问题的 option 。
miss option argument 时 , variable 会被 ":" ,$OPTARG 是出问题的 option 。
如果 options 不以 ":" 开头,invalid option错误和miss option argument错误都会使 varname被设成?,$OPTARG是出问题的option。
示例:
command -options parameter
果在执行Shell程序也采用上述格式,Bourne Shell中提供了一条获取和处理命令行选项的语句,即getopts语句。该语句的格式为:
getopts options variable options 选项字符串,会逐个匹配 variable 每次匹配成功的选项(需要参数的选项之后没有找到参数,会写入 "?") $OPTIND getopts 的特殊变量,下一个要处理的参数索引,初值是 1,每次执行 getopts 时都会更新。 $OPTARG getopts 的特殊变量, 选项的实际参数(不同情况下有不同的值)
getopts 允许把选项堆叠在一起。如(-ab a、b两个选项都会执行)
如要带参数,须在对应选项后加 :(如h后需加参数 h:ms)。此时选项和参数之间至少有一个空白字符分隔,这样的选项不能堆叠。
当 options 以 “:” 开头时,getopts 会区分 invalid option 错误 和 miss option argument 。
invalid option 时, variable 会被设成 "?" ,$OPTARG 是出问题的 option 。
miss option argument 时 , variable 会被 ":" ,$OPTARG 是出问题的 option 。
如果 options 不以 ":" 开头,invalid option错误和miss option argument错误都会使 varname被设成?,$OPTARG是出问题的option。
示例:
#!/bin/bash while getopts ":a:bc" arg #选项后面的冒号表示该选项需要参数 do case $arg in a) echo "a's arg:$OPTARG" #参数存在$OPTARG中 ;; b) echo "b" ;; c) echo "c" ;; :) echo "none argument" ;; ?) #当有不认识的选项的时候arg为? echo "unkonw argument" exit 1 ;; esac done
相关文章推荐
- 理解 Linux 配置文件【转】
- kafka broker集群
- RHEL 6.6搭建hadoop 2.x集群环境
- 查看 Linux 是32位还是64位的
- 使用linux交叉编译mono
- odoo--connector
- Linux rpm 命令参数使用详解[介绍和应用]
- 去OpenCVManager,大部分为转载,仅当自己学习使用
- Svn 提示错误:previous operation has not finished 解决方案
- linux下的锁机制
- Linux系统中的数据流重定向和管道
- 5.【SELinux学习笔记】类型增强
- apache学习笔记
- Hadoop 2.X中的依赖Job
- hadoop伪分布式模式的搭建
- shell脚本:创建函数并指定目录进行下载
- shell脚本:创建函数并指定目录进行下载
- Linux acpi off学习的必要
- linux eclipse maven 插件安装
- Error: Package: krb5-workstation-1.10.3-10.el6_4.6.x86_64 (@anaconda-CentOS-201311272149.x86_64/6.5)