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

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

程序的參数能够分为三种:选项。选项的关联值,非选项參数。 比如: $gcc getopt_test.c -o testopt getopt_test .c是非选项參数。...getopt():短选项处理 getopt() 函数位于 unistd.h 系统头文件里,函数原型是: int getopt( int argc, char *const argv[],...getopt的返回值是argv数组中的下一个选项參数。 由optind记录argv数组的下标,假设选项參数处理完成,函数返回-1; 假设遇到一个无法识别的选项,返回问号(?)。...选项參数处理完成后。optind会指向argv数组尾部的其它非选项參数。 实际上。getopt在运行过程中会重排argv数组,将非选项參数移到数组的尾部。...getopt_long的选项用结构体option定义: struct option { char *name; //长选项的名字 int has_arg; // 0/1。

1.4K30

shell小技巧–长选项参数getopt用法

在编写shell脚本时,往往需要我们传入相应的参数,来完成我们的一些目的,传入参数大体有三种方法: 1、1 2 ….. 2、getopts,这是shell内置的一种处理参数的方法,可以处理单个字符选项,...例如 -h 192.168.1.1 这种形式的参数 3、getopt,这是unix自带的一种处理命令行参数的方法,既可以处理单个字符选项,也可以处理长选项,例如:–host 192.168.1.1 或...–host=192.168.1.1 这里介绍下getopt的用法 使用介绍 SYNOPSIS getopt optstring parameters getopt [options...Note that errors of getopt(1) are still reported as coming from getopt....Other implementations of getopt(1), and this version if the environment variable GETOPT_COMPATIBLE

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

    getopts(1) builtin command

    常用的是 getopts 和 getopt。getopts 是 Shell 内建命令,getopt 是一个独立的外部命令,通常在 GNU coreutils 中提供。...getopts 是一个简化版的 getopt,出现的目的仅仅是为了代替 getopt 较快捷方便的执行参数分析。 getopts 语法相对简单,不支持长选项(以 -- 开头的长选项,如--help)。...NAME 为用来存储选项字符的变量名。 如果遇到一个无效选项,getopts 将选项变量 NAME 置为 ?。如果不是静默模式,则打印错误消息,并将 OPTARG 变量置空(unset)。...如果是静默模式,无效选项字符将存储在 OPTARG 变量中,且不会打印任何错误消息。...-b 和 -o 选项后跟冒号,表示需要参数。 -h 后面没有冒号,表示无需参数。 如果存储选项字符的变量 opt_name 为问号,表示遇到一个无效选项。选项字符会放置到 OPTARG 变量。

    52510

    python getopt使用

    这个长格式表示"help" 是一个开关选项;"output=" 则表示后面应该带一个参数。  5. 调用getopt 函数。函数返回两个列表:opts 和args 。...sys.argv[1:], shortargs, longargs ) getopt.getopt ( [命令行参数列表], '短选项', [长选项列表] ) 短选项名后的冒号 : 表示该选项必须有附加的参数...这个长格式表示"help" 是一个开关选项;"output=" 则表示后面应该带一个参数。  5. 调用getopt 函数。函数返回两个列表:opts 和args 。...目前有短选项和长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词。长格式是在Linux下引入的。许多Linux程序都支持这两种格式。...这个长格式表示"help"是一个开关选项;"output="则表示后面应该带一个参数。 5. 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。

    77910

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

    ()只支持短格式选项,而getopt_long()既支持短格式选项,又支持长格式选项,getopt_long_only()用法和getopt_long()完全一样,唯一的区别在输入长选项的时候可以不用输入...getopt()可以处理哪个选项以及哪个选项需要参数。...如果getopt()遇到未知选项,则返回字符’?’。如果所有命令行选项已被解析,返回-1。...最后要说明一下,getopt()会改变argv[]中参数的顺序。经过多次getopt()后,argv[]中的选项和选项的参数会被放置在数组前面,而optind 会指向第一个非选项和参数的位置。...注意: getopt_long()在识别短选项时,如果出现未知选项,可以使用全局变量optopt获取未知选项。

    4.7K71

    shell getopt「建议收藏」

    getopt简介 命令语法 解析规则 短选项 长选项 双引号的作用 shell脚本示例 shift命令 set命令 eval 实际运行 最后 getopt简介 以下主要翻译自man getopt。...命令语法 先从一个较为明了的语法开始 getopt -o optstring -- parameters 这里,getopt所带参数可以分成三个部分: -o和--选项是getopt命令自身的选项 parameters...Tip: 这里的短选项仅指parameters中解析出的短选项,而非getopt自带的短选项'-o' 短选项 getopt的-o选项用来指示parameters中包含的短选项。...长选项 比如说-v是短选项,而--version则是长选项。 getopt中可以使用-l来指定长选项。-l后也可以指定多个选项,多个选项之间以逗号分隔。长选项一般以--接上长选项的名称。...原因是因为getopt对-o选项的处理。

    2.1K20

    PHP脚本指南-解析GNU C风格命令行选项

    这个函数来解析命令行选项,PHP手册地址 getopt ( string $options [, array $longopts [, int &$optind ]] ) : array 参数分为短参数名...、完整参数名和optind,但是PHP缺少了长短选项的映射关系配置,比如-v和--version,-h和--help等 $options短参数字符列表,该字符串中的每个字符会被当做选项字符,匹配传入脚本的选项以单个连字符...只允许 a-z、A-Z 和 0-9 $longopts长参数字符列表,此数组中的每个元素会被作为选项字符串,匹配了以两个连字符--传入到脚本的选项。...长参数由于是多字节,所以必须是数组,否则没法分隔 以上的两个参数字符后用单独的字符表示不接受传值;后面跟随一个冒号:的字符表示此选项需要值(必填);后面跟随两个冒号::的字符表示此选项的值可选 下面我们来看一下具体代码示例...$ cat getopt.php <?

    1.4K70

    深入理解getopt

    getopt – 解析命令的可选项 【说明】 getopt 只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下: 1、形如:cmd [-a][-b] //对短选项的解析; 2、...传入的’-‘开始的字符被解析为选项,getopt 一次执行解析出一个 option,如果循环执行,可以将 argv 中的全部 option 解析出来; 2、在 getopt 的执行中,每次进入都会更新...1; 2) 如果 optstring 的第一个参数是 ‘-’,则会将所有的非选项当选项处理,并且返回 1,用字符代码 1 表示该选项; 6、如果 getopt 不能识别一个选项字符,它会打印一个错误消息到...,getopt() 返回 -1,这也是 getopt 进行选项解析的循环截至条件; 3、如果 argv 中解析出 optstring 中描述的选项字符,则返回该字符,如果该选项指定了参数,则全局变量...optarg 指向该参数; 4、如果 getopt 遇到一个非 optstring 指定的选项字符,这表示该选项是未识别的,返回 ‘?’

    1.8K10

    如何获取PHP命令行参数

    getopt() 从命令行参数列表中获取选项 其实就是这样一个简单的函数,我们就可以像 Linux 的命令选项一样获取指定的命令值。...,细心的同学肯定又发现了一个问题,这个 getopt() 函数的参数中定义的选项名称后面为啥都要加个冒号?...冒号规则 getopt() 的前两个参数都支持一套关于选项获取的规则: 单独的字符(不接受值) 后面跟随冒号的字符(此选项需要值) 后面跟随两个冒号的字符(此选项的值可选) 我们还是直接通过代码来看一下...选项参数中断 上文中我们提到过参数中断的问题,就是在选项参数之后如果有一个非选项参数的参数出现,getopt() 就无法再获取到这个非选项参数后面的所有内容了。...这时,如果我们想知道选项参数在什么地方或者因为哪个参数而中断的话,就可以使用 getopt() 函数的第三个参数了。

    3.3K10

    getopt在Python中的使用

    在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项和长选项两种格式。短选项格式为”-“加上单个字母选项;长选项为”–“加上一个单词。长格式是在Linux下引入的。...选项的写法要求   对于短格式,”-“号后面要紧跟一个选项字母。如果还有此选项的附加参数,可以用空格分开,也可以不分开。长度任意,可以用引号。...当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个”:”号。...这个长格式表示”help”是一个开关选项;”output=”则表示后面应该带一个参数。 5. 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。...o保存选项参数,a为附加参数。接着对取出的选项参数进行处理。

    10.4K30

    getopt(1) command

    1.简介 getopt 是一个广泛使用的命令行工具,用于解析复杂的命令行选项。它提供了一种标准化的方式来处理短选项和长选项,以及选项的参数,使得编写和维护命令行工具变得更加容易。...注意,与 getopt 类似的一个命令 getopts 是 Shell 内建命令,其功能没有 getopt 强大,只支持短选项,不能解析长选项。...--:可选,用于明确区分 getopt 命令的选项和需要解析的选项字符串。 OPTSTRING:描述选项格式的字符串。 PARAMETERS:需要解析的实际命令行参数。...注意,getopt(1) 的错误仍然报告为来自 getopt。 -o, --options SHORTOPTS 指定要识别的短(单个字符)选项。...如果找不到此选项,则使用getopt的第一个不以'-'开头的参数作为短选项字符串。每个短选项字符后面可以跟一个冒号,表示它有一个必需的参数。后面跟两个冒号,表示它有一个可选参数。

    45210

    Shell中使用getopt、getopts命令

    命令的格式 getopt命令可以接受一系列任意形式的命令行选项和参数,并自动将它们转换成适当的格式。...格式如下: getopt optstring parameters optstring是关键所在,它定义命令行有效的选项字母,还定义了那些选项字母需要参数值 getopt命令有一个更高级的版本叫做...定义了四个有效选项字母:a,b,c,d.冒号(:)被放在了字母b后面,因为b选项需要一个参数值,当getopt命令运行时,它会检查提供的参数列表(-a -b test1 -cd test2 test3)...应该说绝大多数脚本使用该函数就可以了,如果需要支持长选项以及可选参数,那么就需要使用getopt. 下面是getopt自带的一个例子: #!...$n的值,这些值在getopt中重新排列过了 eval set -- "$TEMP" #经过getopt的处理,下面处理具体选项。

    6.1K20

    getopt 可能重排参数

    当然这只是一个简单的例子,并没有多个参数,也没有多个选项,选项也没有带自己的参数。后面我们会自己做一个复杂的例子,来做验证。 回到 getopt,它的作用就是简化对这些输入的处理。...如何简化呢,就是通过定义一个可接受的选项“模板”,然后通过不停调用 getopt 来将所有选项解析出来, 最后剩下的就是不能被识别的参数了,但是这种场景就简单了,只需按顺序处理它们即可。...下面是一个用来作验证的例子: getopt.c 1 #include ".....它可以用来验证 getopt 有没有正确的执行: $ ....当然了,getopt 也不是万能的,例如在选项中有重复的输入时,就需要你来处理它们了(不做特别处理的话是后面的选项覆盖前面的)。

    61830

    Python 命令行参数

    参数列表: ['test.py', 'arg1', 'arg2', 'arg3'] ---- getopt模块 getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv...命令行选项使得程序的参数更加灵活。 支持短选项模式(-)和长选项模式(–)。 该模块提供了两个方法及一个异常处理来解析命令行参数。...options: 以字符串的格式定义,options后的冒号(:)表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。...另外一个方法是 getopt.gnu_getopt,这里不多做介绍。 Exception getopt.GetoptError 在没有找到参数列表,或选项的需要的参数为空时会触发该异常。...属性 msg 和 opt 为相关选项的错误信息。 实例 假定我们创建这样一个脚本,可以通过命令行向脚本文件传递两个文件名,同时我们通过另外一个选项查看脚本的使用。

    1.3K20

    getopt用法说明

    optind——再次调用 getopt() 时的下一个 argv 指针的索引。 optopt——最后一个未知选项。 二.说明 1.简要用法 函数说明 getopt()用来分析命令行参数。...参数 optstring为选项字符串, 告知 getopt()可以处理哪个选项以及哪个选项需要参数,如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数,全域变量optarg 即会指向此额外参数...如果在处理期间遇到了不符合optstring指定的其他选项getopt()将显示一个错误消息,并将全域变量optarg设为“?”...2.补充说明 optstring中的指定的内容的意义(例如getopt(argc, argv, “ab:c:de::”);) 1.单个字符,表示选项,(如上例中的abcde各为一个选项) 2....参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。(如上例中的b:c:) 3 单个字符后跟两个冒号,表示该选项后可以跟一个参数,也可以不跟。

    77100
    领券