Linux之getopt函数
2016-01-07 17:44
525 查看
getopt函数的作用是用来对命令行输入的参数进行处理。直接看例子。
1 源代码 getopt.c
2 运行结果
$ ./getopt -w
Welcome!
$ ./getopt -h
Hello!
$ ./getopt -n mjzhan
Hi, mjzhan!
$ ./getopt -hn mjzhan
Hello!
Hi, mjzhan!
3 对关键语句进行解释
optChar=getopt(argc, argv, "whn:")
3.1 getopt的输入参数
getopt有三个参数,前两个不多做解释。第三个"whn:"表示可以接收的参数为w,h和n,n后面多了个冒号表示n参数需要带上相应的参数字符串,而这个参数字符串是存储在外部全局变量optarg中的。
如上例的./getopt -n mjzhan。
3.2 getopt的返回值
getopt每次返回一个从命令行输入的参数,在本例中将返回值赋给optChar,然后再对optChar进行判断处理,有多个参数时需要使用循环来多次调用getopt函数。
如./getopt -hn mjzhan的运行结果有两行,就是分别对h和n这两个参数执行的结果。
当命令行输入的参数都读取完毕后,返回-1,本例中就表现为while循环退出。
经过上面的介绍,应该可以掌握getopt最基本的使用方法了。
4 参数错误处理
有人会问,如果我输入的参数不在whn三者之一,或者我输入的n参数后面没有跟参数字符串呢?上运行示例:
$ ./getopt -j
getopt: unknown option -- j
$ ./getopt -n
getopt: option requires an argument -- n
看到没,系统给出的提示还是很friend的。但有人会说,我需要自定义的提示!好了,做两件事就可以了
4.1 第一件事,让系统提示闭嘴
这个很简单,将"whn:"变成":whn:"就可以了,也就是前面加个冒号,自己去试试吧,这时候系统会很安静,没有任何错误提示。
4.2 第二件事,自定义提示
如果getopt能够返回某两个特定的值,一个告诉我参数错误,一个告诉我参数后面没有跟参数字符串,那么自定义提示就会很简单啊,多加两个case判断嘛!
确实有这两个返回值,参数错误的返回值是‘?',缺少参数字符串的返回值是':',那么新加的两个case如下:
好了,自己去运行一下吧,这时候就会给出自定义的提示了。
以上只是一些简单的用法,基本场合应该够了,更多的功能大家自己去研究了。
1 源代码 getopt.c
#include <stdio.h> #include <unistd.h> int main(int argc, char **argv) { char optChar; while(-1 != (optChar=getopt(argc, argv, "whn:"))) { switch(optChar) { case 'w': printf("Welcome!\n"); break; case 'h': printf("Hello!\n"); break; case 'n': printf("Hi, %s!\n", optarg); break; } } return 0; }
2 运行结果
$ ./getopt -w
Welcome!
$ ./getopt -h
Hello!
$ ./getopt -n mjzhan
Hi, mjzhan!
$ ./getopt -hn mjzhan
Hello!
Hi, mjzhan!
3 对关键语句进行解释
optChar=getopt(argc, argv, "whn:")
3.1 getopt的输入参数
getopt有三个参数,前两个不多做解释。第三个"whn:"表示可以接收的参数为w,h和n,n后面多了个冒号表示n参数需要带上相应的参数字符串,而这个参数字符串是存储在外部全局变量optarg中的。
如上例的./getopt -n mjzhan。
3.2 getopt的返回值
getopt每次返回一个从命令行输入的参数,在本例中将返回值赋给optChar,然后再对optChar进行判断处理,有多个参数时需要使用循环来多次调用getopt函数。
如./getopt -hn mjzhan的运行结果有两行,就是分别对h和n这两个参数执行的结果。
当命令行输入的参数都读取完毕后,返回-1,本例中就表现为while循环退出。
经过上面的介绍,应该可以掌握getopt最基本的使用方法了。
4 参数错误处理
有人会问,如果我输入的参数不在whn三者之一,或者我输入的n参数后面没有跟参数字符串呢?上运行示例:
$ ./getopt -j
getopt: unknown option -- j
$ ./getopt -n
getopt: option requires an argument -- n
看到没,系统给出的提示还是很friend的。但有人会说,我需要自定义的提示!好了,做两件事就可以了
4.1 第一件事,让系统提示闭嘴
这个很简单,将"whn:"变成":whn:"就可以了,也就是前面加个冒号,自己去试试吧,这时候系统会很安静,没有任何错误提示。
4.2 第二件事,自定义提示
如果getopt能够返回某两个特定的值,一个告诉我参数错误,一个告诉我参数后面没有跟参数字符串,那么自定义提示就会很简单啊,多加两个case判断嘛!
确实有这两个返回值,参数错误的返回值是‘?',缺少参数字符串的返回值是':',那么新加的两个case如下:
case ':': printf("Need optString!\n"); break; case '?': printf("Wrong opt!\n"); break;
好了,自己去运行一下吧,这时候就会给出自定义的提示了。
以上只是一些简单的用法,基本场合应该够了,更多的功能大家自己去研究了。
相关文章推荐
- gettimeofday()函数的使用方法 转载
- JDK安装以及配置Linux
- Linux 配置samba 服务
- MySQL安装以及配置Linux
- centos错误提示:您在 /var/spool/mail/root 中有邮件
- Linux——Pip命令
- linux软件源码安装管理
- 最全面的linux信号量解析
- Centos7安装Mysql
- SSH 远程控制 Linux
- 一键完成RHCE6.0上午的考试
- 优化Linux的内核参数来提高服务器并发处理能力
- centos7 安装R语言遇到的各种坑
- Linux useradd 命令
- kvm虚拟机vnc和spice配置
- linux时间类型localtime_r (转载)
- Centos7,Hadoop-2.5.1下HBase-1.1.2安装部署
- VMware下CentOS 6.3 NAT不能连外网的问题解决办法
- Linux中的命令学习笔记
- centos 安装 Scrapy