getopts和getopt的使用

getopts 获取参数

getopts的使用
语法格式:getopts [option[:]] [DESCPRITION] VARIABLE

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

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

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

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

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

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

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

语法作用例子
:option选项前带有一个冒号表示忽略错误输出
option选项后没有一个冒号表示该选项没有自己的参数。(如果传了参数,将导致接下来的选项不会被执行,因为该参数被当作选项执行)如-a
option:选项后带有一个冒号表示该选项必须有自己的参数。(如果不传参数,将导致接下来的选项会被当成参数)如-a DESCPRITION
例子脚本
#!/bin/bash
while getopts abc:d: OPT
do
echo while
    case $OPT in
        a)
          echo -e "\t a=$OPTARG";;
        b)
          echo -e "\t b=$OPTARG";;
        c)
          echo -e "\t c=$OPTARG";;
        d)
          echo -e "\t d=$OPTARG";;
        ?)
          echo -e "\t unkonwn";;
    esac
echo done
echo 
done
echo exit

错误输出

test.sh: 非法选项 – g

[root@localhost ~]# sh test.sh -g
test.sh: 非法选项 -- g
while
	 unkonwn
done

exit
[root@localhost ~]# 
选项无参数但是被传参数
[root@localhost ~]# sh test.sh -a 1 -b
while
	 a=
done

exit
[root@localhost ~]# 
选项必须传参数但是不传参数
[root@localhost ~]# sh test.sh -c -d 1
while
	 c=-d
done

exit
[root@localhost ~]# 

getopt 获取参数

如果需要支持长选项以及可选参数,那么就需要使用getopt

参数作用例子
-o表示短选项-h
--long表示长选项-- help
:option参数前面有冒号,表示忽略错误
option:选项后带有一个冒号表示该选项该选项必须有自己的参数。如-c arg
option::两个表示该选项有一个可选参数,可选参数必须紧贴选项如-carg 而不能是-c arg
-n出错时的信息

参考文章
https://www.cnblogs.com/klb561/p/8933992.html
https://linuxeye.com/389.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值