首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

getopt()、getopt_long()与getopt_long_only()获取命令行参数

一般情况下,使用getopt_long()来完成命令行选项以及参数获取。 下面将一一介绍三者具体用法。...如果选项字符串里字母后接着冒号“:”,则表示选项后面必须带有参数,否则报错,这个参数可以和选项连在一起写,也可以用空格隔开。...注意:不带参数选项可以写在一起,比如使用shell命令rm -rf *删除当前目前下所有文件与目录。-r表示递归删除,-f表示不提示立刻删除,它们两个都不带参数,这时就可以写在一起。...*longopts, int *longindex); 有了getopt()了解,getopt_long()理解相对来说也就比较简单了,因为getopt_long()用法与getopt()极其相似...,包含了getopt()所有功能,只是增加了选项支持,长选项使用两个破折号–表示。

4.1K71
您找到你想要的搜索结果了吗?
是的
没有找到

C语言中getopt()函数用法

2. optstring 选项字符串内容如下: 字符代表一个选项; 没有冒号就表示纯选项,不需要参数; 一个冒号代表该选项之后必须带有参数,可以使用空格,也可以不使用两个冒号代表该项之后参数可写可不写...; 还有一些错误处理: 针对字符后无冒号设定: 不加空格带上参数后,会解析为这个两个独立选项合并; 加上空格带上参数,会只解析出选项,忽略参数。...; 支持-a选项,后面必须带有一个参数; 支持-b选项,后面必须带有一个参数; 支持-c选项,后面可以带参数,也可以不用带参数; 3....} } } 使用gcc编译: gcc getopt_test.c -o getopt_test.o 单独测试每个选项: 测试都没有问题,接下来再看看几种错误情况: 比如 -v 选项不需要参数...,带个参数结果如下: 再比如-a选项明确需要带一个参数,则带两个参数结果如下: 如果不加参数,结果如下: 最后演示一个综合示例: 发布者:全栈程序员栈长,转载请注明出处:

2.8K10

最全总结 | 聊聊 Python 命令行参数化几种方式!

,所以在使用时传顺序必须固定 因此,这种方式适用于参数个数少且场景固定项目中 import sys if __name__ == '__main__': # 获取参数列表 # 注意...: 命令行参数名:arg2,参数值: 命令行参数名:arg3,参数值: 4. getopt getopt 是 Python 中一个内置标准模块,可以结合 sys.argv 模块,直接解析脚本运行时参数...使用格式:getopt(args,shortopts,longopts = []) 其中 args 参数列表,可以通过 sys.argv 获取,可以参考上面 shortopts 短参数组成字符串 定义短参数...,如果参数有值,需要在短参数后追加一个「 : 」符号 传使用方式:-n 23 longopts 长参数列表 定义长参数列表时,如果某个参数有值,需要在短参数后追加一个「 = 」符号 传使用方式:--...[1:]:获取除脚本文件名外所有命令行参数 # opts:存有所有选项及其输入值元组列表 # args:去除有用输入以后剩余部分 opts, args = getopt(sys.argv[:],

1.9K20

Shell中使用getopt、getopts命令

格式如下: getopt optstring parameters optstring是关键所在,它定义命令行有效选项字母,还定义了那些选项字母需要参数值 getopt命令有一个更高级版本叫做...定义了四个有效选项字母:a,b,c,d.冒号(:)被放在了字母b后面,因为b选项需要一个参数值,当getopt命令运行时,它会检查提供参数列表(-a -b test1 -cd test2 test3)...,并给予提供optstring进行解析,它会自动讲-cd选项分成两个单独选项,并插入双破折线来分割行中额外参数。...命令并不擅长处理带空格和引号数值 3.使用更高级getopts getopts格式如下: getopts optstring variables 使用getopts例子如下: [...应该说绝大多数脚本使用该函数就可以了,如果需要支持长选项以及可选参数,那么就需要使用getopt. 下面是getopt自带一个例子: #!

5.4K20

getopt getopts

一.getopt 1.使用 getopt optstring options parameters optstring定义了命令行有效选项字母,还定义了哪些选项字需要参数,需要参数选项后面加:即可;...如果指定了一个不在optstring中选项,默认情况下,getopt命令会产生一条错误消息,如果想要忽略,可以加上-q选项getopt ab:cd -a -b test1 -cd test2 test3...: 定义了4个有效选项,还指定b需要参数值,它会自动将-cd选项分成两个单独选项,并插入双破折号来分开行中额外参数; 二.getopts 1.使用 getopts optstrings variable...,OPTARG:保存选项数值,OPTIND:保存了参数列表中正在处理参数位置; getopts命令解析选项时,会移除开头-(单破折号); 选项和参数值连在一起时,getopts也能分别识别它们...,所以使用选项和参数直接可以不用加空格; getopts能将命令行上未定义选项统一输出成问号。

42010

python笔记26-命令行传sys.argv

参数列表: ['test.py', 'arg1', 'arg2', 'arg3'] getopt模块 getopt模块是专门处理命令行参数模块,用于获取命令行选项和参数,也就是sys.argv。...命令行选项使得程序参数更加灵活。支持短选项模式(-)和长选项模式(—)。 该模块提供了两个方法及一个异常处理(Exception getopt.GetoptError)来解析命令行参数。...options: 以列表格式定义,options后冒号(:)表示该选项必须有附加参数,不带冒号表示该选项不附加参数。...该方法返回值由两个元素组成: 第一个是 (option, value) 元组列表。 第二个是参数列表,包含那些没有’-‘或’—‘参数。...实例 假定我们创建这样一个脚本,可以通过命令行向脚本文件传递两个文件名,同时我们通过另外一个选项查看脚本使用

1.8K40

getopt解析

extern int optopt; //当命令行选项字符不包括在optstring中或者选项缺少必要参数时,该选项存储在optopt中,getopt返回’?’...3 单个字符后跟两个冒号,表示该选项后必须跟一个参数。参数必须紧跟在选项后不能以空格隔开。该参数指针赋给optarg。(这个特性是GNU扩张)。...还要注意是默认情况下getopt会重新排列命令行参数顺序,所以到最后所有不包含选项命令行参数都排到最后。...那么一遇到不包含选项命令行参数,getopt就会停止,返回-1。...getopt_long()中,optstring是一个字符串,表示可以接受参数。例如,”a:b:cd”,表示可以接受参数是a,b,c,d,其中,a和b参数后面 跟有更多数值

67210

如何优雅地处理命令行参数?

来源:公众号【编程珠玑】 网站:https://www.yanbinghu.com 长选项处理 为了应对前面说这种情况,需要用到下面两个函数中一个: #include int...has_arg 参数可选项,no_argument表示该选项后不带,required_argument表示该选项后面带参数 *flag 匹配到选项后,如果flag是NULL,则返回val;如果不是NULL...因为只有长选项才会对应index。 可以看到,使用--跟长选项,单个-后面跟短选项,但是如果是下面这样呢? $ ./main2 -help we get option -h,index 0 ..../main2: invalid option -- 'p' unknow option:p 在这里,由于使用getopt_long,它对于单个-字符串,里面每个字符都当成了一个选项,因此help它来说...如果想要-help也被当成长选项,那么就需要用到getopt_long_only函数了。 最后,再完整用一遍: $ .

1K10

浅谈linux命令行解析参数之getopt_long函数「建议收藏」

通常使用GNU C提供函数getoptgetopt_long、getopt_long_only函数来解析命令行参数。...二、getopt_long函数 getopt函数只能处理短选项,而getopt_long函数两者都可以,可以说getopt_long已经包含了getopt_long功能。...——表示选项后面带一个参数,如-a 100 (3)一个字符,后接两个冒号——表示选项后面带一个可选参数,即参数可有可无, 如果带参数,则选项与参数直接不能有空格 形式应该如...a:如果参数为空NULL,那么当选中某个长选项时候,getopt_long将返回val值。...5、全局变量: (1)optarg:表示当前选项对应数值。 (2)optind:表示是下一个将被处理到参数在argv中下标值。

1.2K30

【C】解析命令行参数--getoptgetopt_long

前言 在程序中一般都会用到命令行选项, 我们可以使用getoptgetopt_long函数来解析命令行参数 getopt getopt主要用来处理短命令行选项, 例如....所为长选项就是诸如--help形式, 使用该函数, 需要引入下面是函数原型: #include int getopt_long(int argc,..., 即按如下形式--version, 0 表示该选项后面不带参数, NULL 表示直接将v返回(字符v在ascii码中对应数值), 即在使用getopt_long遍历到该条选项时, getopt_long.../test -n zhangjikai -v -h 下面我们程序做一下修改, 这一次将 struct option 中 flag 和 longindex 设为具体值 void use_getpot_long2...getopt_long_only 时, - 和 --都可以作用于长选项, 而使用 getopt_only 时, 只有 --可以作用于长选项.

55810

Python3脚本编程常用.md

Python 提供了 getopt 模块来获取命令行参数(指定参数名称) getopt 模块是专门处理命令行参数模块,用于获取命令行选项和参数,也就是sys.argv,命令行选项使得程序参数更加灵活...- options: 以字符串格式定义,options后冒号(:)表示该选项必须有附加参数,不带冒号表示该选项不附加参数。...- 该方法返回值由两个元素组成: 第一个是 (option, value) 元组列表。 第二个是参数列表包含那些没有'-'或'--'参数。...案例:假定我们创建这样一个脚本,可以通过命令行向脚本文件传递两个文件名,同时我们通过另外一个选项查看脚本使用。...:]) #这也是关键点 (排除脚本文件本身) WeiyiGeek.getopt ---- argparse.ArgumentParser 描述:argparse模块用于命令行选项、参数和子命令解析器

77920

Python3脚本编程常用.md

WeiyiGeek.sys.argv getopt Python 提供了 getopt 模块来获取命令行参数(指定参数名称) getopt 模块是专门处理命令行参数模块,用于获取命令行选项和参数,也就是...sys.argv,命令行选项使得程序参数更加灵活,支持短选项模式(-)和长选项模式(–)。...- 该方法返回值由两个元素组成: 第一个是 (option, value) 元组列表。 第二个是参数列表包含那些没有'-'或'--'参数。...案例:假定我们创建这样一个脚本,可以通过命令行向脚本文件传递两个文件名,同时我们通过另外一个选项查看脚本使用。...WeiyiGeek.getopt argparse.ArgumentParser 描述:argparse模块用于命令行选项、参数和子命令解析器 基础语法: #创建解析器,ArgumentParser

99430

【说站】python中getopt模块是什么

python中getopt模块是什么 1、Getopt模块是专门处理命令行参数模块,用于获取命令行选项和参数。命令行选项使程序参数更加灵活,支持短选项模式(-)和长选项模式(-)。...实例 import sys import getopt     def main(argv):     input_file = ""     output_file = ""     # "hi:o:...": 短格式分析串, h 后面没有冒号, 表示后面不带参数; i 和 o 后面带有冒号, 表示后面带参数     # ["help", "input_file=", "output_file="]: 长格式分析串列表..., 每个元组形式为: (选项, 附加参数),如: ('-i', 'test.png');     # args是个列表,其中元素是那些不含'-'或'--'参数     opts, args = getopt.getopt...if __name__ == "__main__":     main(sys.argv) 以上就是python中getopt模块介绍,希望大家有所帮助。

31230

《Linux命令行与shell脚本编程大全》第十四章 处理用户输入

而不是选项 运行脚本时, -- 之前选项选项参数。  -- 之后就是命令行参数。 3. 处理带值参数 有时候选项会带上一个额外数值。...命令格式如下: getopt optstring parameters optstring:定义了命令行有效选项字母,还定义了哪些选项字母需要参数值 比如: $getopt ab:cd –a –b testb...后面 –cd 会被自动拆分成 –c  -d 两个单独选项 还会插入双破折线来分割行中额外参数。...image.png 2.在脚本中使用getopt 可以在脚本中使用getopt来格式化脚本所携带任何命令行选项或者参数,用起来略繁琐。...getopts会用到两个环境变量: OPTARG:会保存一个参数值 OPTIND:保存参数列表中getopts正在处理参数位置。 getopts知道何时停止处理选项,并且把参数留给你处理。

1.7K50

shell getopt「建议收藏」

选项 比如说-v是短选项,而--version则是长选项getopt中可以使用-l来指定长选项。-l后也可以指定多个选项,多个选项之间以逗号分隔。长选项一般以--接上长选项名称。...如果尝试执行上面的那个例子的话,可以看到,并没有出现预期中结果。 原因是因为getopt-o选项处理。...参看-o选项说明,有这样一句 If this option is not found, the first parameter of getopt that does not start with...shell脚本示例 上面了解了getopt基本使用方法,这里展示一个在shell脚本中使用getopt例子。...最后 感觉getopt就是按照指定规则参数进行重排序过程。 从getopt自带示例中也可以看到,重排序后结果被set命令设置为位置参数,再由用户自行处理。

1.5K20

python getopt使用

o 保存选项参数,a 为附加参数。接着取出选项参数进行处理。(例子也采用手册例子) 实践篇: Python代码   #!...o 保存选项参数,a 为附加参数。接着取出选项参数进行处理。(例子也采用手册例子) 实践篇: Python代码   #!...在Python中提供了getopt模块很好实现了这两种用法支持,而且使用简单。 取得命令行参数   在使用之前,首先要取得命令行参数。使用sys模块可以得到命令行参数。...这个长格式表示"help"是一个开关选项;"output="则表示后面应该带一个参数。 5. 调用getopt函数。函数返回两个列表:opts和args。opts为分析出格式信息。...o保存选项参数,a为附加参数。接着取出选项参数进行处理。

55410

命令行參数选项处理:getopt()及getopt_long()函数使用

在执行某个程序时候,我们通常使用命令行參数来进行配置其行为。 命令行选项和參数控制 UNIX 程序,告知它们怎样动作。...当 gcc程序启动代码调用我们入口函数 main(int argc,char *argv[]) 时,已经命令行进行了处理。...程序选项应该以一个短横线开头。后面包括单个字母或数字。选项分为:带关联值和不带关联值以及可选。不带关联值选项能够在一个短横线后合并使用,比如 ls -al。 此外还有长选项。...const char *optstring ); getopt使用main函数argc和argv作为前两个參数,optsting是一个字符列表。...每一个字符代表一个 单字符选项,假设一个字符后面紧跟以冒号(:),表示该字符有一个关联值作为下一个參数。两个冒号”::”代表这个选项參数是可选

54230

getopt在Python中使用

在Python中提供了getopt模块很好实现了这两种用法支持,而且使用简单。 取得命令行参数   在使用之前,首先要取得命令行参数。使用sys模块可以得到命令行参数。...处理所使用函数叫getopt(),因为是直接使用import导入getopt模块,所以要加上限定getopt才可以。 2....这个长格式表示”help”是一个开关选项;”output=”则表示后面应该带一个参数。 5. 调用getopt函数。函数返回两个列表:opts和args。opts为分析出格式信息。...if o in (“-o”, “–output”): output = a   使用一个循环,每次从opts中取出一个两元组,赋给两个变量。...o保存选项参数,a为附加参数。接着取出选项参数进行处理。

6.8K30
领券