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

那么GNU getopt只支持中间的选项?

关于GNU getopt,它是一个命令行参数解析工具,用于将命令行参数解析为可执行程序中的相应变量。GNU getopt支持短选项(如-a -b)和长选项(如--long-option)。

对于中间的选项,GNU getopt支持以下两种选项风格:

  1. 选项可以在选项参数之前或之后。例如,以下命令都是有效的:
代码语言:txt
复制
command -a -b file1 file2
command -ab file1 file2
  1. 选项参数可以与选项同时出现,也可以独立出现。例如,以下命令都是有效的:
代码语言:txt
复制
command -afile1 -bfile2
command -a file1 -b file2

然而,GNU getopt不支持长选项的简写形式。例如,以下命令是无效的:

代码语言:txt
复制
command --long-o file1

这是因为GNU getopt无法区分短选项和长选项的简写形式。为了避免这个问题,建议使用诸如Python的argparse库或其他命令行参数解析库来处理命令行参数。

总之,GNU getopt支持中间的选项,但是需要注意选项参数和选项之间的关系,以及长选项的简写形式可能导致的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • getopt在Python中的使用

    大家好,又见面了,我是你们的朋友全栈君。 在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项和长选项两种格式。...短选项格式为”-“加上单个字母选项;长选项为”–“加上一个单词。长格式是在Linux下引入的。许多Linux程序都支持这两种格式。...在Python中提供了getopt模块很好的实现了对这两种用法的支持,而且使用简单。 取得命令行参数   在使用之前,首先要取得命令行参数。使用sys模块可以得到命令行参数。...其中第1个为脚本的文件名。 选项的写法要求   对于短格式,”-“号后面要紧跟一个选项字母。如果还有此选项的附加参数,可以用空格分开,也可以不分开。长度任意,可以用引号。...o保存选项参数,a为附加参数。接着对取出的选项参数进行处理。

    6.8K30

    是不是傻傻分不清楚Unix 和 Linux?看了这个就知道了

    那么,二者之间具体存在哪些明显的差异呢? 网上很多有关POSIX和Unix工具的教程和指南总是假设你安装了Linux,或者更具体地说,安装了基于GNU的操作系统。...Unix不包含长选项 Unix命令的选项有两种写法:短选项(只有一条短线-)与长选项(有两条短线--)。短选项一般会采用缩写的形式,而长选项一般会写出完整的单词。...许多工具程序都接受长选项,例如grep --count,对应的短选项是grep -c。前者是GNU的写法,其他系统通常不会采用这种写法,例如BSD。...事实上,标准的getopts工具程序和相应的getopt C函数只支持短选项。 3. Make不同于GNU make POSIX版本的make比GNU版本更有局限性。...此外,BSD的语法与GNU完全不同,例如条件语句。幸运的是,如果你只关注macOS和Linux,则可以放心地使用GNU的特性,因为macOS都是基于GNU的。 4.

    52460

    getopts(1) builtin command

    getopts 是 Shell 内建命令,getopt 是一个独立的外部命令,通常在 GNU coreutils 中提供。 本文将介绍如何使用 getopts 处理命令行参数。...getopts 是一个简化版的 getopt,出现的目的仅仅是为了代替 getopt 较快捷方便的执行参数分析。 getopts 语法相对简单,不支持长选项(以 -- 开头的长选项,如--help)。...如果一个字母后面有一个冒号 :,表示该命令行选项后面要跟一个参数。如 OPTSTRING 写成 “co:f:”,表示支持 -c、-o、-f 选项,-o 和 -f 选项后面需要跟一个参数。...6.示例 使用 getopts,编写一个 Shell 脚本,可支持识别命令行选项 -b、-o、-h。其中,-b 和 -o 选项后需要跟一个参数。 #!...参考文献 bash(1) - Linux manual page Coreutils - GNU core utilities GNU Coreutils Manual - gnu.org

    14610

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

    argc 參数包括程序參数的个数,而 argv 包括指向这些參数的指针数组。 程序的參数能够分为三种:选项。选项的关联值,非选项參数。...比如: $gcc getopt_test.c -o testopt getopt_test .c是非选项參数。-o是选项,testopt是-o选项的关联值。 依据Linux的惯例。...程序的选项应该以一个短横线开头。后面包括单个字母或数字。选项分为:带关联值的和不带关联值的以及可选的。不带关联值的选项能够在一个短横线后合并使用,比如 ls -al。 此外还有长选项。...getopt的返回值是argv数组中的下一个选项參数。 由optind记录argv数组的下标,假设选项參数处理完成,函数返回-1; 假设遇到一个无法识别的选项,返回问号(?)。...选项參数处理完成后。optind会指向argv数组尾部的其它非选项參数。 实际上。getopt在运行过程中会重排argv数组,将非选项參数移到数组的尾部。

    59130

    Python 命令行参数

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

    89620

    第二十四章 : 编译程序

    然而,许多编译任务是相当简单的,只涉及到几个步骤。这都取决于程序包。我们将看一个非常简单的案例, 为的是给大家提供一个对编译过程的整体认识,并为那些愿意进一步学习的人们构筑一个起点。...更有意义的是,拥有单独的一段知道如何打开文件的程序,并允许所有需要它的程序共享它。对常见任务提供支持由所谓的库完成。这些库包含多个程序,每个程序执行一些可以由多个程序共享的常见任务。...这是因为每次解释型程序执行时,程序中每一条源码指令都需要翻译,而一个已经编译好的程序,一条源码指令只翻译了一次,翻译后的指令会永久地记录到最终的执行文件中。...它们由操作系统供给,来支持每个程序的编译。...让我们去掉一个中间目标文件: [me@linuxbox diction-1.11]$ rm getopt.o [me@linuxbox diction-1.11]$ make We see that make

    25510

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

    2020年新年第一文,冲鸭~来说一下PHP脚本开发时如何去解析对应的命令行选项 获取脚本名称 我们先来说一下如何获取当前执行的脚本是什么,我们可以使用$argv来获取,$argv包含当运行于命令行下时传递给当前脚本的参数的数组...、完整参数名和optind,但是PHP缺少了长短选项的映射关系配置,比如-v和--version,-h和--help等 $options短参数字符列表,该字符串中的每个字符会被当做选项字符,匹配传入脚本的选项以单个连字符...只允许 a-z、A-Z 和 0-9 $longopts长参数字符列表,此数组中的每个元素会被作为选项字符串,匹配了以两个连字符--传入到脚本的选项。...长参数由于是多字节,所以必须是数组,否则没法分隔 以上的两个参数字符后用单独的字符表示不接受传值;后面跟随一个冒号:的字符表示此选项需要值(必填);后面跟随两个冒号::的字符表示此选项的值可选 下面我们来看一下具体代码示例...任何个人或团体,未经允许禁止转载本文:《PHP脚本指南-解析GNU C风格命令行选项》,谢谢合作!

    1.2K70

    深入理解getopt

    getopt – 解析命令的可选项 【说明】 getopt 只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下: 1、形如:cmd [-a][-b] //对短选项的解析; 2、...传入的’-‘开始的字符被解析为选项,getopt 一次执行解析出一个 option,如果循环执行,可以将 argv 中的全部 option 解析出来; 2、在 getopt 的执行中,每次进入都会更新...optstring 中指定了 option 需要参数,但在命令行没有参数,那么 getopt 将返回 ‘?’...,如果在 optstring 的第一个字符(或者在第一个字符是 +/- 之后)是 ‘:’,那么将返回 ‘:’; 8、如果在选项中有 “–”,并且前后是空格,其含义是强制终止 getopt 的继续执行,...,将导致程序错误; 2、当传入的 argv 中的选项全部被解析,getopt() 返回 -1,这也是 getopt 进行选项解析的循环截至条件; 3、如果 argv 中解析出 optstring 中描述的选项字符

    1.6K10

    bashshell 解析命令行参数工具:getoptsgetopt

    使用getopts处理参数虽然是方便,但仍然有两个小小的局限: 1.选项参数的格式必须是-d val,而不能是中间没有空格的-dval。...2.所有选项参数必须写在其它参数的前面,因为getopts是从命令行前面开始处理,遇到非-开头的参数,或者选项参数结束标记--就中止了,如果中间遇到非选项的命令行参数,后面的选项参数就都取不到了。...3.不支持长选项, 也就是--debug之类的选项 再看个实例: #!...不支持长选项, 比如: --date 3....5. getopt往往需要跟set配合使用 6. getopt -o的选项注意一下 7. getopts 使用语法简单,getopt 使用语法较复杂 8. getopts 不会重排所有参数的顺序

    11.1K90

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

    前言 我们在Linux用到的命令常常支持很多参数,那么如何写一个程序,也像Linux命令一样支持很多参数呢?有什么什么优雅的处理方法?...argv 参数字符串数组,可从main函数入口传入 optstring 支持的选项字符串 第一个和第二个参数我们很熟悉,它和main函数的参数是一样的: int main(int argc,char...指的是你支持的选项,假设你的程序支持-h,-a,-n选项,并且-n选项后面要跟具体参数,那么optstring可以是: “han:” 选项后面有一个冒号表示这个选项需要带参数。...如果想要-help也被当成长选项,那么就需要用到getopt_long_only函数了。 最后,再完整的用一遍: $ ....总结 想要优雅地处理命令行参数,今天介绍的几个函数是有必要掌握了,那么是不是很想自己尝试一下呢?更多细节等你去发现。

    1.1K10

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

    1.getopt()函数 getopt函数用来解析命令行选项,声明所在头文件为: #include 函数原型如下: int getopt(int argc, char * const...; 还有一些错误处理: 针对字符后无冒号的设定: 不加空格带上参数后,会解析为这个两个独立选项合并; 加上空格带上参数,会只解析出选项,忽略参数。...针对字符后一个冒号的设定: 带上空格多加几个参数后,只解析第一个,其余忽略; 如果不加参数,解析失败; 比如,"vha:b:c::"就表示: 支持-v选项,通常用于打印版本号; 支持-h选项,通常用于打印帮助信息...; 支持-a选项,后面必须带有一个参数; 支持-b选项,后面必须带有一个参数; 支持-c选项,后面可以带参数,也可以不用带参数; 3....} } } 使用gcc编译: gcc getopt_test.c -o getopt_test.o 单独测试每个选项: 测试都没有问题,接下来再看看几种错误的情况: 比如 -v 选项不需要参数

    3.1K10

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

    对比分析 getopts 和getopt 都是 Unix/Linux 系统中用于解析命令行选项的工具,但它们之间有一些关键的不同点: 1....内置支持 •getopts 是大多数 shell(如 bash)内置的命令,不需要额外安装。它适用于简单的选项解析,可以处理带有参数的单个字符选项,识别短横线- 开头的选项。...•getopt 是一个外部命令,通常Linux发行版会自带。它支持短选项和长选项,并且可以重组命令行参数以将所有选项放在非选项参数之前。 2....•getopt 更加复杂和灵活,它可以处理复杂的命令行选项组合,包括长选项、分组选项、带等号的选项值(如--output=file.txt),以及更多高级特性。 3....•getopt 只负责按规则重新对参数进行排列,进一步解析需要自行编写代码去处理。 脚本代码示例 使用getopts 的例子: #!

    14110

    日志清理脚本-V0.0.3(增加多目录清理、正则表达式匹配、调试模式;部分细节优化)

    需求背景 解决某些中间件或者应用日志无法自动清理的情况,比如:Nacos 的 access 日志清理,临时目录文件清理等。...0.0.3 2020/07/28 增加 支持仅匹配目录类型,默认是查询每个文件并删除 Version 0.0.2 2020/07/21 优化 支持正则表达式匹配日志文件 增加 支持配置多目录清理 增加...支持调试模式 Version 0.0.1 2020/06/05 删除 N 天前的日志文件,仅删除匹配 ".log" 的日志文件 选项 sh clear-logs.sh [options] <value...) #% sh ${SCRIPT_NAME} [options] ... #% #%描述(DESCRIPTION) #% 删除 N 天前的日志文件 #% #%选项...ARGS=$(getopt -o vtDd:e:p: --long help,version -n "${SCRIPT_NAME}" -- "$@") then # 无效选项,则退出 exit

    38320

    getopt(1) command

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

    9510
    领券