一、getopts 简介

  由于shell命令行的灵活性,自己编写代码判断时,复杂度会比较高。使用内部命令 getopts 可以很方便地处理命令行参数。一般格式为:

getopts “options” variable

  getopts 的设计目标是在循环中运行,每次执行循环,getopts 就检查下一个命令行参数,并判断它是否合法。即检查参数是否以 - 开头,后面跟一个包含在 options 中的字母。如果是,就把匹配的选项字母存在指定的变量 variable 中,并返回退出状态0;如果 - 后面的字母没有包含在 options 中,就在 variable 中存入一个 ,并返回退出状态0;如果命令行中已经没有参数,或者下一个参数不以 - 开头,就返回不为0的退出状态。


二、用法

getopts “a:b:” variable
    有“:”时,表示选项带参数,无参数会报错
getopts内置变量
OPTARG:选项后的参数
OPTIND:选项索引,可以理解为命令后带的参数个数,以空白位为分隔符

三、例子
  1. while getopts "a:b:" option;do
  2. case $option in
  3. a)
  4. echo a
  5. ;;
  6. b)
  7. echo b
  8. ;;
  9. esac
  10. done
  11. echo $1
  12. echo $OPTIND
  13. shift $[$OPTIND-1]
  14. echo $1
此处shift将后面的参数移除,只剩最后一个,方便$1的使用。