getopts是shell的一个内置命令,通常用来处理shell命令行选项,但是不能直接处理长选项(如:--prefix=/home等)。
getopts有2个参数,第一个参数是字符串,包括字符和“:”,每一个字符都是一个有效的选项,如果字符后面带有“:”,表示这个字符有自己的参数。第二个参数用来存储获取的选项。
shell为getopts提供了2个内置变量:
OPTARG:存储相应选项的参数;
OPTIND:存储原始$*中下一个要处理选项的位置;
实例:
#!/bin/bash echo $* while getopts ":a:bc" opt #第一个冒号表示忽略错误 do case $opt in a ) echo $OPTARG echo $OPTIND;; b ) echo "b $OPTIND";; c ) echo "c $OPTIND";; ? ) echo "error" exit 1;; esac done echo $OPTIND shift $(($OPTIND - 1)) #通过shift $(($OPTIND - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell编程处理了。 echo $0 echo $*
执行命令:./getopts.sh -a 11 -b -c
-a 11 -b -c
11
3
b 4
c 5
5
./getopts.sh
参考资料:
http://blog.csdn.net/li385805776/article/details/16981541
时间: 2024-10-03 19:03:55