shell命令getopts解析
getopts是一条获取和处理命令行选项的语句,格式为getopts option_string variable .其中option_string中包含一个有效的单字符选项,若getopts命令在命令行中发现了连字符,那么它将用连字符后面的字符同option_string相比较。若有匹配,则把变量variable的值设为该选项。若无匹配,则variable设为?。当getopts发现连字符后面没有字符,会返回一个非零的状态值。Shell程序中可以利用getopts的返回值建立一个循环。
有时侯选项中还带一个值,getopts命令同样也支持这一功能。这时需要在option_string中选项字母后加一个冒号。当getopts命令发现冒号后,会从命令行该选项后读取该值。若该值存在,那么将被存在一个特殊的变量OPTARG中。如果该值不存在,getopts命令将在OPTARG中存放一个问号,并且在标准错误输出上显示一条消息。
例:
#!/bin/sh
#filename:getopts.sh
while getopts h:u:p: OPTION
do
case $OPTION in
h) echo "主机地址:$OPTARG";;
u) echo "用户名:$OPTARG";;
p) echo "密码:$OPTARG";;
\?) echo "无效的选项";;
esac
Done
执行脚本时输入:
./getopts.sh -h10.6.208.183 -uroot -p 123
则执行结果为;
主机地址:10.6.208.183
用户名:root
密码:123