BASH中getopts的用法

getopts optstring varname [arg ...]

optstring
 option字符串,会逐个匹配
varname    每次匹配成功的选项
arg        参数列表,没写时它会取命令行参数列表

$OPTIND    特殊变量,option index,会逐个递增
$OPTARG    特殊变量,option argument,不同情况下有不同的值


细则1:当optstring以”:“开头时,getopts会区分invalid option错误和miss option argument错误。
      invalid option时,varname会被设成?,$OPTARG是出问题的option;
      miss option argument时,varname会被设成:,$OPTARG是出问题的option。
      如果optstring不以”:“开头,invalid option错误和miss option argument错误都会使
      varname被设成?,$OPTARG是出问题的option。

细则2:当optstring中的字母跟”:“时,表明该option可接参数,参数(argument)放在$OPTARG中;
      如果缺参数,且optstring是以”:“开头,则varname的值会是:,$OPTARG是该option,
      否则varname的值是?,$OPTARG是该option。(参照细则1)

简单的sample:

#!/bin/bash

SKIPBLANKS=
TMPDIR=/tmp
CASE=lower

while getopts :bt:u arg
do
    case $arg in
        b)
SKIPBLANKS=TRUE
                  echo "If skip blanks? $SKIPBLANKS"
                  ;;

        t) if [ -d "$OPTARG" ]
                    then
                 
   TMPDIR=$OPTARG
                    echo "Temp dir is $TMPDIR."
                  else
                    echo "$0: $OPTARG is not a directory." >&2
                    exit 1
                  fi
                  ;;

        u)
CASE=upper
                  echo "Case sensitivity is $CASE."
                  ;;

        :) echo "$0: Must supply an argument to -$OPTARG." >&2
                  exit 1
                  ;;

        \?) echo "Invalid option -$OPTARG ignored." >&2
                  ;;
        esac
done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值