
shell脚本传可选参数 getopts 和 getopt的方法 - 志不坚者智不达 - 博客园 (cnblogs.com)
选项之间可以通过冒号:进行分隔,也可以直接相连接,:表示选项后面必须带有参数,如果没有可以不加实际值进行传递
例如:getopts ahfvc: option表明选项a、h、f、v可以不加实际值进行传递,而选项c必须取值。使用选项取值时,必须使用变量OPTARG保存该值。
while getopts ":a:b" opt #第一个冒号表示忽略错误;字符后面的冒号表示该选项必须有自己的参数
d:这个参数后必须跟一个字串,如:-d xxx,如果没有XXX这个字串,getopt将返回‘?’,这个和没有相关参数返回值是一样的,所以建议在这个getopt参数字串前加上‘:’,如:“:d:s:t:7xoch”,这样当没有跟XXX字串时,将返回':',同理s:t:是一样,xoch参数后不要跟XXX字串,如果跟上,在执行getopt之后,所以未解析的参数会被集中在一起,这时可以用全局变量argv[optind]除开始获取:for(optind<argcoptind++){
strcpy(v,argv[optind])
}
关于数字,抱歉我还没用过,我猜大概是限制所跟字串的长度的。
既然你参数是可选的(::),按照规定只能option和value之间不能有空格。用getopt之类的函数无法实现。
你要实现这样的目标,可以自己写一个。也不是很困难。
因为现成有很多类似的实现。到网上找一个即可。
或者参见这篇文档, 其中附件有getopt_long的例子可以下载。我看过。符合你的需求。
http://www.ibm.com/developerworks/cn/aix/library/au-unix-getopt.html
帮你下载好了,参见附件。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)