getopt 是什么
- bash的getopt命令经常用在shell脚本内部或函数内部,用来解析脚本执行或函数执行时传递的选项、参数。
getopt 如何使用
getopt 命令的模板
getopt -o SHORT_OPTIONS -l LONG_OPTIONS -n "$0" -- "$@"
- -o 表示后接短选项。
- -l 表示后接长选项。
- -n "$0" getopt 在解析命令行时,如果出错。getopt 将使用该 NAME 作为报错的脚本名称。
- -- 表示 getopt命令自身的选项到此结束,后面的元素是要被 getopt 解析的命令行参数。
- "$@" 表示所有的命令行参数。
使用场景模板
parameters=$(getopt -o SHORT_OPTIONS -l LONG_OPTIONS -n "$0" -- "$@")
[ $? != 0 ] && exit 1
eval set -- "$parameters" # 将$parameters设置为位置参数
while true ; do # 循环解析位置参数
case "$1" in
-a|--longa) ...;shift ;; # 不带参数的选项-a或--longa
-b|--longb) ...;shift 2;; # 带参数的选项-b或--longb
-c|--longc) # 参数可选的选项-c或--longc
case "$2" in
"")...;shift 2;; # 没有给可选参数
*) ...;shift 2;; # 给了可选参数
esac;;
--) ...; break ;; # 开始解析非选项类型的参数,break后,它们都保留在$@中
*) echo "wrong";exit 1;;
esac
done