http://bestchenwu.iteye.com/blog/1074200
对于getopts,例如对于一个命令 常见形式command -[很多选项] file
如何获取那里面的每个选项,并且规定有些选项必须指定的呢?这些都需要依靠getopts命令来完成。
常见的应用形式:getopts options_string option(这里的option表示把刚才读取的选项值存放到option中)
例如: 下面一个例子用于获取脚本的afgh等参数,并提示一些信息
- #!/bin/bash
- ALL=false
- HELP=false
- FILE=false
- VERBOSE=false
- CHAR=false
- while getopts :ahfgc: OPTION
- do
- case $OPTION in
- a) ALL=true
- echo "ALL is $ALL"
- ;;
- h) HELP=true
- echo "HELP is $HELP"
- ;;
- f) FILE=true
- echo "FILE is $FILE"
- ;;
- c) VERBOSE=true
- CHAR=$OPTARG
- echo "CHAR is $CHAR"
- ;;
- \?) echo "`basename $0 ` needs -[a|h|f] -c[args] file"
- ;;
- esac
- done
注意这个脚本里的:afghc: 的冒号 前面的冒号表示屏蔽脚本的系统提示错误,转而使用自己提供的错误提示方式。后面的冒号表示c这个选项需要指定具体的参数值,同时需要获取到参数值后将参数值存放到变量OPTARG中,供以后读取用。
\? ?表示捕捉任意单字符,这里捕捉错误,并打印相应信息。 basename $0 表示提取脚本的名称 (例如basename ./test.sh 将将输出test.sh)
在运行这个脚本的时候,有以下几种情况:
- [chenwu@localhost unit20-arguments]$ ./getopts.sh -ah -c 3
- ALL is true
- HELP is true
- CHAR is 3
- [chenwu@localhost unit20-arguments]$ ./getopts.sh -ah -c
- ALL is true
- HELP is true