首页
学习
活动
专区
圈层
工具
发布

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

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

4.7K71

参数解析工具 getopts 与 getopt 的对比

内置支持 •getopts 是大多数 shell(如 bash)内置的命令,不需要额外安装。它适用于简单的选项解析,可以处理带有参数的单个字符选项,识别短横线- 开头的选项。...复杂性与灵活性 •getopts 比较简单,适合于脚本内部使用,当你的程序只需要处理有限数量的单字符选项时,这是一个很好的选择。它的语法相对直接,易于理解和使用。...然后需要使用set 命令来重新设定位置参数。 5. 参数值处理 •getopts 负责参数解析,可以方便地提取参数值。...•getopt 只负责按规则重新对参数进行排列,进一步解析需要自行编写代码去处理。 脚本代码示例 使用getopts 的例子: #!...综上所述,如果你的需求较为简单,推荐使用getopts,因为它更简单易用;如果需要更复杂的功能,比如长选项或参数重排序,则应该考虑使用getopt。

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

    shell 用户输入

    /xxx3456#分别对应参数0,1,2,3,4,取参为$0,$1,$2,$3,$4,多个参数之间用空格隔开ex读取参数读取脚本名检测参数是否为空变量$#:指运行脚本或者执行命令行所带的参数个数,类似于...)-l:长选项,用逗号隔开,选项后带冒号表示需要参数-n:表示错误处理是显示的程序名—"$@":表示将原始命令行参数传递给getoptex命令行短选项命令行长选项命令行静默脚本选项#命令行静默getopt-qab.../bin/bash#设置getopt命令的结果为输入参数set--$(getopt-qab:cd"$@")#循环查找$1参数,再每次执行完do后使用shift移动一个参数位置(比如有参数1,2,3,4,...[args…]注意与getopts区别getopt需要通过set—将getopt输出的值重新设定参数位置,getopts可直接用于循环中,一般用于whilegetopt用于case时,选项为-a,而getopts...的OPTARG变量可取当前选项对应的参数值getopts的OPTINT变量可取当前参数的位置,比如第一个参数OPTIND为1,以此类推,位置从1算起,ex/gs-a-bargs-coption=-avalue

    20110

    最全总结 | 聊聊 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[:],

    2.9K20

    C语言中getopt()函数的用法

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

    3.6K10

    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自带的一个例子: #!

    6.1K20

    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能将命令行上未定义的选项统一输出成问号。

    61510

    getopts(1) builtin command

    对于一些只需要很简单的命令行参数的脚本,通过使用N形式轻松的完成解析,但对于比较复杂的命令行形式的参数,就需要脚本的编写者在脚本中加入复杂的代码对命令行入参进行解析。...为了减少重复性编程和简化命令行参数处理的过程,Shell 为脚本编写者提供了一些命令行处理方法,使用这些方法可以轻松的处理各种形式的命令行参数。 常用的是 getopts 和 getopt。...getopts 是 Shell 内建命令,getopt 是一个独立的外部命令,通常在 GNU coreutils 中提供。 本文将介绍如何使用 getopts 处理命令行参数。...getopts 是一个简化版的 getopt,出现的目的仅仅是为了代替 getopt 较快捷方便的执行参数分析。 getopts 语法相对简单,不支持长选项(以 -- 开头的长选项,如--help)。...如果遇到选项结束或发生错误,则返回 false。 5.特殊变量 getopts 的使用涉及一些特殊变量。 OPTARG OPTARG 存储当前选项的参数值。

    54110

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

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

    2.2K40

    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参数后面 跟有更多的参数值。

    91410

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

    来源:公众号【编程珠玑】 网站:https://www.yanbinghu.com 长选项处理 为了应对前面说的这种情况,需要用到下面两个函数中的一个: #includegetopt.h> 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函数了。 最后,再完整的用一遍: $ .

    1.4K10

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

    通常使用GNU C提供的函数getopt、getopt_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中的下标值。

    2.2K30

    【C】解析命令行参数--getopt和getopt_long

    前言 在程序中一般都会用到命令行选项, 我们可以使用getopt 和getopt_long函数来解析命令行参数 getopt getopt主要用来处理短命令行选项, 例如....所为长选项就是诸如--help的形式, 使用该函数, 需要引入getopt.h>下面是函数原型: #include getopt.h> 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 时, 只有 --可以作用于长选项.

    98910

    Python3脚本编程常用.md

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

    1.4K30

    Python3脚本编程常用.md

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

    1.1K20

    【说站】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模块的介绍,希望对大家有所帮助。

    48630

    《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知道何时停止处理选项,并且把参数留给你处理。

    2.2K50
    领券