getopts option_string variable
option_string中包含一个有效的单字符选项。若getopts命令在命令行中发现了连字符,那么它将用连字符后面的字符同option_string相比较。若有匹配,则把变量variable的值设为该选项。若无匹配,则variable设为?。当getopts发现连字符后面没有字符,会返回一个非零的状态值。Shell程序中可以利用getopts的返回值建立一个循环。有时侯选项中还带一个值,getopts命令同样也支持这一功能。这时需要在option_string中选项字母后加一个冒号。当getopts命令发现冒号后,会从命令行该选项后读取该值。若该值存在,那么将被存在一个特殊的变量OPTARG中。如果该值不存在,getopts命令将在OPTARG中存放一个问号,并且在标准错误输出上显示一条消息。
好,复习到这。直接看代码:
main()
{
[[ $# -eq 0 ]] && syntax && exit 0
while getopts l:v:fish c
do
case "$c" in
h) syntax
exit 0
;;
l) MACH=$OPTARG ;;
f|i|s) FLAG=-$c ;;
v) path=$OPTARG;;
*)
echo "[ERROR] command error"
syntax
exit 0
;;
esac
done
}
...
main "$@"
这是一个脚本的片段,假设该脚本名叫:mysh.sh。syntax是一个函数描述了mysh.sh的用法,这里不再列举。当直接敲mysh.sh不跟任何参数的时候,该脚本会直接列出使用该脚本的语法,如果带上参数getopts会将这些参数赋给变量c。注意其中的冒号,它代表从mysh.sh该选项后读取该值。若该值存在,那么将被存在一个特殊的变量OPTARG中。如果该值不存在,getopts命令将在OPTARG中存放一个问号。比如这里的参数l,它后面的值会直接赋给变量OPTARG。
阅读(2285) | 评论(0) | 转发(0) |