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命令行参数处理相关推荐

  1. bash/shell 解析命令行参数工具:getopts/getopt

    转载自:https://my.oschina.net/leejun2005/blog/202376 bash 脚本中,简单点的参数选项,我们可以直接用位置参数 $1 $2 这样来获取处理了,例如下面这 ...

  2. Shell命令 getopts/getopt用法详解 命令行参数

    Shell命令行参数解析getopts/getopt用法详解 在Linux bash中,可以用以下三中方式解析命令行参数: 直接处理:使用$1.$2.$3- 进行解析 getopts:短选项的情况,例 ...

  3. linux shell运行脚本命令行参数,shell脚本命令行参数简介

    之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互. bash shell提供了命令行参数添加在命令后面的数据值).命令行选项修改命令行为的单字符值)和直接读取键盘输入. 1.命 ...

  4. 命令行参数解析函数 getopt、getopt_long

    getopt 函数在头文件 <unistd.h> 中,它可以解析我们传入的命令行参数. 可以实现类似 gcc -o .rm -rf 等命令. man 3 getopt .在线版:http: ...

  5. python之CWD与命令行参数

    一些变量 当前工作路径(CWD) os.getcwd可以获取脚本启动目录, 许多文件工具隐式地使用该变量. 命令行参数 sys,argv可以获取在命令行键入的启动参数,将其作为脚本的输入. shell ...

  6. linux的shell命令行参数,shell脚本命令行参数简介

    之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互. bash shell提供了命令行参数添加在命令后面的数据值).命令行选项修改命令行为的单字符值)和直接读取键盘输入. 1.命 ...

  7. Go 学习笔记(45)— Go 标准库之 flag(命令行参数解析)

    1. 参数解析说明 import "flag" flag 包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个 set 集合.每条都有各自的状态参数. 使用 f ...

  8. INNO SETUP 获得命令行参数

    INNO SETUP 获得命令行参数 原文 http://www.cnblogs.com/ahuo/archive/2009/07/30/1534998.html [Code] function Ge ...

  9. Windows安装用于OCR的Tesseract及使用命令行参数进行OCR

    Windows安装用于OCR的Tesseract及使用命令行参数进行OCR 1. 效果图 2. Tesseract 安装及验证 参考 这篇博客将介绍如何安装和使用光学字符识别(OCR Optical ...

最新文章

  1. 软件测试工程师的角度看论证学问
  2. Another ORA-00600 internal error
  3. Discuz! X2.5 添加自定义数据调用模块
  4. Java Web之filter、listener、Interceptor
  5. java 冒泡排序的三种写法_冒泡排序的三种实现(Java)
  6. mysql高级用法(函数)
  7. 表字段出现oracle sql语句关键字时
  8. DB2报“数据库日志已满”问题解决
  9. Java中什么是JAP之hibernate-mvc修改功能-Springmvc
  10. 程序员的目标应该是向牛人看齐而不是当经理或者赚大钱
  11. RAID磁盘阵列的部署(red hat 6.5)
  12. Linux下安装anaconda,创建虚拟环境python3.7,并且安装深度学习框架pytorch进行模型训练
  13. 串口转WIFI的工作方式理解
  14. 百度、谷歌搜索引擎原理
  15. python数列求和_python等差数列求和公式前 100 项的和实例
  16. 比犀利哥更经典的话语
  17. HAUT2021蓝桥杯专题练习第四周记录——贪心
  18. HTML2游戏——绿林怪盗
  19. 插入式隔离器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. linux添加扩展gpio,嵌入式Linux工控板的ISA总线GPIO扩展

热门文章

  1. 什么是最重要的事情?来自长辈的教诲
  2. 利物浦大学图书馆官网西交利物浦大学图书馆官网
  3. 广搜--(搜索的第一道题)图像有用区域
  4. 201621123053《Java程序设计》第十三周学习笔记文章
  5. 走进AngularJs(六) 服务
  6. 网络监控软件:国产化VS外来者
  7. xtrabackup增量备份mysql +MHA
  8. mongodb基础知识_3
  9. PetClinic 没有分页功能
  10. Windows下MySql安装【图文】