linux命令行参数解析学习心得

转载出处:blog.csdn.net/bailyzheng/article/details/8048733


最近用到一个命令行工具,之前也一直说想把命令行参数解析看一下,今天算是做一个小的总结。

命令行参数解析分类:单个字符的参数(-a -b),还有字符串参数(--video --audio)

函数声明:int getopt(int argc, char * const argv[], const char *optstring); 

可以解析单个字符选项, optstring通常写成“a:b:c:”这种形式的。

用法:

1.前两个参数好理解,直接传入main(int argc,char **argv)中的两个参数就可以了。第三个参数写成我们需要的选项字符串就可以。

2.函数返回值:当匹配到的时候返回相应的字符常量,匹配完成之后返回-1.没有匹配到返回‘?’.

3.通常我们对返回值用一个switch做判断,然后接上相应的处理就可以了。


函数声明:int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);

这个函数和上面函数差不多,但是可以支持长选项的命令行解析。比如“--video”之类的。

用法:

1.同样的使用,optstring是选项参数字符串。

2.struct option 是用来定义长选项的。定义如下:

struct option{

    char *name;

    int has_arg;

    int *flag;

    int val;

}

通常这个结构体我们这样写

strutc option options{

{"video", required_argument, NULL, 'v'};

{NULL, 0, NULL, 0};

}

这句话的意思就是

(1).定义了一个长选项“video”(注意这里不需要加一对短横线。),

(2).required_argument数值为1表示选项后面需要加参数。

(3).NULL表示,匹配到符合的选项之后,函数返回的是val也就是最后一个参数的值。

(4).最后一个参数'v'表示的意思就是,假如有短选项'-v',那么命令行输入-v与--video表示的是一个意思,如果这个长选项没有对应的短选项一致的话,那就写0就可以了。


3.longindex这个参数我们一般可以写成NULL,但是有时候我们需要知道这个值,比如,我们--video; --video-format;  --video-color;有着三个可选的长选项,那么对于后面两者而言,getopt_long返回值都是0,那么我们怎么区分呢,这时候可以通过options[longindex].name来区分是video-format 还是video-color,所以这个时候这个参数就有很重要的用处了。


好了,大体上的这两个命令行的解析函数就分析到这了,接下来再写一篇关于匹配命令行参数的正则表达式的文章。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值