一、getopt的C接口
man 3 getopt
// 手册给了详细说明,并有了例子。getopt使用了内部全局变量
int getopt(int argc, char * const argv[], const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;
中文参考 ,一段好的代码
备注一下这段代码,有几个字是要注意的
(1) $()相当于``
(2) 关于--
**
man find, A double dash -- can also be used to signal that
any remaining arguments are not options
**
man bash,
, -- also mean args are _set_ to words after --
**
(3) for o; do
done
没有in语句,上面的语句相当于
for o in "$@"; do
done
(4) getopts是shell内置命令,有
getopts option_string variable
OPTIND:初始化为1, 每次getopts处理完一个opt后++
OPTARG:包含了对应variable的选项的参数的值
options-strings开始部分没有冒号:与有:是有区别的。
(5) getopt没有内置参数
getopt只是剔除所有无效的opt并重新排序,如
getopt -o :abc:d:e -- -a -b myhaha -c mygod -e -d
-a -b -c 'mygod' -e -- 'myhaha'
getopt -o :ab: -l "" -- -a -b myhaha
getopt -l "help,verbose,work-dir:,config-file:,unk,desc-str:" -- --help
(6) 如果getopt命令本身没有使用-o|--option选项的话,那么
--后面的第一个参数被当做短选项(我在这晕了一段时间), 如:
root@Ubt:~# getopt -l "help,verbose" -- --help --verbose
--verbose --
root@Ubt:~# getopt -o a: -l "help,verbose" -- --help --verbose
--help --verbose --
(7)
阅读(1192) | 评论(0) | 转发(0) |