千家信息网

Shell脚本中getopts如何使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Shell脚本中getopts如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. getopsgetopts是一个解析脚本选项参
千家信息网最后更新 2026年11月01日Shell脚本中getopts如何使用

Shell脚本中getopts如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1. getops

getopts是一个解析脚本选项参数的工具。

(1) 语法格式:getopts [option[:]] [DESCPRITION] VARIABLE

(2) option:表示为某个脚本可以使用的选项.

(3) ":":如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION)

(4) VARIABLE:表示将某个选项保存在变量VARIABLE中

getopts是linux系统中的一个内置变量,一般用在循环中。每当执行循环是,getopts都会检查下一个命令选项,如果这些选项出现在option中,则表示是合法选项,否则不是合法选项。并将这些合法选项保存在VARIABLE这个变量中。

getopts还包含两个内置变量,及OPTARG和OPTIND:

  • OPTARG就是将选项后面的参数(或者描述信息DESCPRITION)保存在这个变量当中。

  • OPTIND:这个表示命令行的下一个选项或参数的索引(文件名不算选项或参数)

初次使用要注意这几点:

  • 脚本位置参数会与optstring中的单个字母逐个匹配,如果匹配到就赋值给name,否则赋值name为问号;

  • optstring中单个字母是一个选项,如果字母后面加冒号,表示该选项后面带参数,参数值并会赋值给OPTARG变量;

  • optstring中第一个是冒号,表示屏蔽系统错误(test.sh: illegal option -- h);

  • 允许把选项放一起,例如-ab

2. 实验

(1) getops参数简单使用

#!/bin/bash while getopts ':b:d:' OPT &> /dev/null;do  case $OPT in  b)  echo "The options is b"  echo $OPTARG ;;  d)  echo "The options is d"  echo $OPTARG ;;  *)  echo "Wrong Options"  exit 7 ;;  esac # echo $OPT # echo $OPTARG done echo $OPTIND shift $[$OPTIND-1] echo $1

执行结果:

./getopts1.sh -d 'nice' fixnale

说明:

当输入-d时,$OPT=d,$OPTARG='nice',因此就会显示d)...这一部分的信息。

由于这里有一个选项(-d)和一个参数('nice'),$OPTIND指向命令行中下一个选项或参数的索引位置,因此这里即为3。

shift $[$OPTIND-1]表示将文件名前面的选项和参数踢掉.

(2) getops参数进一步使用

#!/bin/bash echo $* while getopts ":a:bc:" opt do  case $opt in  a)  echo $OPTARG $OPTIND;;  b)  echo "b $OPTIND";;  c)  echo "c $OPTIND";;  ?)  echo "error"  exit 1;;  esac done echo $OPTIND shift $(( $OPTIND-1 )) echo $0 echo $*

执行结果:

./getopts2.sh -a 11 -b -c 6

说明:

while getopts ":a:bc:" opt #第一个冒号表示忽略错误;字符后面的冒号表示该选项必须有自己的参数。

  • $optarg 存储相应选项的参数,如上例中的11、6;

  • $optind 总是存储原始$*中下一个要处理的选项(不是参数,而是选项,此处指的是a,b,c这三个选项,而不是那些数字,当然数字也是会占有位置的)位置。

optind初值为1,遇到"x",选项不带参数,optind+=1;遇到"x:",带参数的选项,optarg=argv[optind+1],optind+=2;遇到"x::",可选参数,属于#1和#2之一。

  • 第一行输出echo $*

  • 第二行,optind初值为1,选项-a的参数为11,下一个要处理的选项-b位置为3,所以输出:11 3;

  • 第三行,然后-b要处理的下一个选项-c位置为4,所以输出:b 4;

  • 第四行,再者-c有参数,所以下一个要处理的位置+2,所以输出:c 6;

看完上述内容,你们掌握Shell脚本中getopts如何使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

参数 位置 变量 脚本 冒号 处理 输出 合法 信息 命令 字母 内容 初值 单个 数字 文件 文件名 方法 更多 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云之行互联网科技 广州百单互联网科技有限公司 互联网是不是新科技 宜安科技 互联网金融 互联网科技logo设计 互联网科技生活的内容 太原新华互联网科技学校怎么样 海南科技产业互联网平台 老年人脱离互联网科技的作文 安控科技rtu产品工业互联网 团飞科技与伯堂互联网服务平台 受益于互联网科技的高速发展 科技互联网大厂 成都互联网科技公司工作好不好 如何创新互联网科技 有人说阿里系是互联网科技企业 图游互联网科技 易企秀互联网科技是做什么的 上海互联网科技园景观 小牛互联网科技有限公司地址 山东特亿宝互联网科技有限公司 互联网科技社 上海万想互联网科技 卓越科技互联网 招聘 济南华为互联网科技产业总部基地 青海科技产业互联网发展 银川新华互联网科技学校联系电话 中国互联网公司排名锤子科技 科技互联网海报 上海旺乐尼互联网科技有限公司
0