linux下使用getopt处理命令行

        以前在linux的shell下运行程序时也带过参数,在参数的处理上是自己写个简单的解析函数来处理argv[]的,显得很麻烦而且笨拙。今天学习代码时才发现有个getopt函数可以轻松的处理命令行参数。难怪linux的那些程序的参数处理都做的很强大。比如ls -al --color=auto,ls --help。

        首先用man 3 getopt看了下函数的手册,结合附带的代码还是没能完全明白。搜了一下发现ibm的developerWorks上有一篇文章介绍的很好:使用 getopt() 进行命令行处理。这里插一句,ibm的这个站点有很多中外的工程师写的技术文章,质量都相当高的,推荐一下。看完这篇文章后,自己写了个简单的,就知道getopt如何使用的,如下:

int main( int argc, char *argv[] )
{
	int opt = 0;
	
	opt = getopt( argc, argv, "a:b::h");
	while( opt != -1 )
	{
		switch( opt )
		{
			case 'a':
				printf("a~~:%s\n",optarg);
				break;
			case 'h':
				printf("help\n");
				break;	
			case 'b':
				printf("b~~:%s\n",optarg);
			default:
				printf("def\n");
				break;	
		}
		opt = getopt(argc,argv,"a:b::h");			
			
	}
	
}

        正确的使用如下:

        bash-4.2# ./main -a 45 -h -b23
        a~~:45
        help
        b~~:23
        def

        当然,最好将help写的详细一些。

        有些参数选项后面不接冒号,有些接一个冒号,有些接两个冒号。

       

            1.单个字符,表示选项,不接参数的。
            2.单个字符后接一个冒号:表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。
            3 单个字符后跟两个冒号,表示该选项后必须跟一个参数。参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值