getopts命令行参数处理
getopts命令行参数处理
一、getopts 简介
由于shell命令行的灵活性,自己编写代码判断时,复杂度会比较高。使用内部命令 getopts 可以很方便地处理命令行参数。一般格式为:
getopts options variable
getopts 的设计目标是在循环中运行,每次执行循环,getopts 就检查下一个命令行参数,并判断它是否合法。即检查参数是否以 - 开头,后面跟一个包含在 options 中的字母。如果是,就把匹配的选项字母存在指定的变量 variable 中,并返回退出状态0;如果 - 后面的字母没有包含在 options 中,就在 variable 中存入一个 ?,并返回退出状态0;如果命令行中已经没有参数,或者下一个参数不以 - 开头,就返回不为0的退出状态。
二、使用举例
cat args
#!/bin/bash while getopts h:ms option do case "$option" inh)echo "option:h, value $OPTARG"echo "next arg index:$OPTIND";;m)echo "option:m"echo "next arg index:$OPTIND";;s)echo "option:s"echo "next arg index:$OPTIND";;\?)echo "Usage: args [-h n] [-m] [-s]"echo "-h means hours"echo "-m means minutes"echo "-s means seconds"exit 1;;esac doneecho "*** do something now ***"
./args -h 100 -ms
option:h, value 100 next arg index:3 option:m next arg index:3 option:s next arg index:4 *** do something now ***
./args -t
./args: illegal option -- t Usage: args [-h n] [-m] [-s] -h means hours -m means minutes -s means seconds
注:
1.getopts 允许把选项堆叠在一起(如 -ms)
2.如要带参数,须在对应选项后加 :(如h后需加参数 h:ms)。此时选项和参数之间至少有一个空白字符分隔,这样的选项不能堆叠。
3.如果在需要参数的选项之后没有找到参数,它就在给定的变量中存入 ? ,并向标准错误中写入错误消息。否则将实际参数写入特殊变量 :OPTARG
4.另外一个特殊变量: OPTIND,反映下一个要处理的参数索引,初值是 1,每次执行 getopts 时都会更新。
getopts命令行参数处理相关推荐
- bash/shell 解析命令行参数工具:getopts/getopt
转载自:https://my.oschina.net/leejun2005/blog/202376 bash 脚本中,简单点的参数选项,我们可以直接用位置参数 $1 $2 这样来获取处理了,例如下面这 ...
- Shell命令 getopts/getopt用法详解 命令行参数
Shell命令行参数解析getopts/getopt用法详解 在Linux bash中,可以用以下三中方式解析命令行参数: 直接处理:使用$1.$2.$3- 进行解析 getopts:短选项的情况,例 ...
- linux shell运行脚本命令行参数,shell脚本命令行参数简介
之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互. bash shell提供了命令行参数添加在命令后面的数据值).命令行选项修改命令行为的单字符值)和直接读取键盘输入. 1.命 ...
- 命令行参数解析函数 getopt、getopt_long
getopt 函数在头文件 <unistd.h> 中,它可以解析我们传入的命令行参数. 可以实现类似 gcc -o .rm -rf 等命令. man 3 getopt .在线版:http: ...
- python之CWD与命令行参数
一些变量 当前工作路径(CWD) os.getcwd可以获取脚本启动目录, 许多文件工具隐式地使用该变量. 命令行参数 sys,argv可以获取在命令行键入的启动参数,将其作为脚本的输入. shell ...
- linux的shell命令行参数,shell脚本命令行参数简介
之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互. bash shell提供了命令行参数添加在命令后面的数据值).命令行选项修改命令行为的单字符值)和直接读取键盘输入. 1.命 ...
- Go 学习笔记(45)— Go 标准库之 flag(命令行参数解析)
1. 参数解析说明 import "flag" flag 包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个 set 集合.每条都有各自的状态参数. 使用 f ...
- INNO SETUP 获得命令行参数
INNO SETUP 获得命令行参数 原文 http://www.cnblogs.com/ahuo/archive/2009/07/30/1534998.html [Code] function Ge ...
- Windows安装用于OCR的Tesseract及使用命令行参数进行OCR
Windows安装用于OCR的Tesseract及使用命令行参数进行OCR 1. 效果图 2. Tesseract 安装及验证 参考 这篇博客将介绍如何安装和使用光学字符识别(OCR Optical ...
最新文章
- 软件测试工程师的角度看论证学问
- Another ORA-00600 internal error
- Discuz! X2.5 添加自定义数据调用模块
- Java Web之filter、listener、Interceptor
- java 冒泡排序的三种写法_冒泡排序的三种实现(Java)
- mysql高级用法(函数)
- 表字段出现oracle sql语句关键字时
- DB2报“数据库日志已满”问题解决
- Java中什么是JAP之hibernate-mvc修改功能-Springmvc
- 程序员的目标应该是向牛人看齐而不是当经理或者赚大钱
- RAID磁盘阵列的部署(red hat 6.5)
- Linux下安装anaconda,创建虚拟环境python3.7,并且安装深度学习框架pytorch进行模型训练
- 串口转WIFI的工作方式理解
- 百度、谷歌搜索引擎原理
- python数列求和_python等差数列求和公式前 100 项的和实例
- 比犀利哥更经典的话语
- HAUT2021蓝桥杯专题练习第四周记录——贪心
- HTML2游戏——绿林怪盗
- 插入式隔离器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- linux添加扩展gpio,嵌入式Linux工控板的ISA总线GPIO扩展