shell中getopts的用法
getopts命令格式
命令格式
getopts string_args var_name
两个参数:
- string_args:字符串参数
- var_name:自定义变量名
getopts实例
如果不是很理解,先记住其命令格式和它的两个参数代表的意义,看下面的操作。
file_name: test
#!/bin/bash
while getopts "a:" opt;do
case ${opt} in
a) echo "this is a vaule ${OPTARG}";;
?) echo "this is bad 'OPTARG' value when 'a' has no value => ${OPTARG}";;
esac
done
- execute the commands
[bsj]# ./test -a
./test: option requires an argument -- a # 报错,提示a需要value
[bsj]# ./test -a hello
this is a vaule hello
结果
- a后面没有跟参数,则会报错
./test: option requires an argument – a - a后面有参数,则输出
this is a vaule hello
这个时候,当a的值缺失的时候,你不想看到报错,而想让它执行了 ?) 选项的命令。
这个时候string_args需要这样写:a:
(在a前面个加:
)
- execute commands again
[bsj]# ./test -a
this is bad 'OPTARG' value when 'a' has no value => a # 执行了 ?)选项的命令
[bsj]# ./test -a hello
this is a vaule hello
总结
据网上众多博文中所诉,都提到了Invalid option
和miss argument option
两种报错,字面意思上,就是无效参数和参数缺失。本博文演示的时参数缺失的情况,当参数缺失时,如果想要处理这种情况,则使用:a:
冒号前缀的这种情况,并设置 ?) 选项来处理参数缺失时需要执行的命令。(其实和捕获异常的概念有类似之处)