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