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

如何使用GetOpt :: Long :: GetOptions解析字符串?

GetOpt 是一个用于从命令行获取选项的 C 标准库,其可以解析以逗号分隔的字符串或命令行参数列表。

GetOptions 可以处理从标准输入获取参数、从命令行参数传递参数等多种场景,例如:

代码语言:c
复制
void print_options(int argc, char**argv)
{
    int o;
    while ((o = getopt_long(argc, argv, "ab:",
            getopt_long_only, NULL)) != -1) {
        switch (o) {
            case 'a': // 指定选项
                printf("Option a specified\n");
                break;
            case 'b': // 指定选项
                printf("Option b specified\n");
                break;
            case 'c': // 指定选项
                printf("Option -c specified\n");
                break;
            case 'd': // 指定选项
                printf("Option d specified\n");
                break;
            default: // 无匹配选项
                printf("Unknown option: %c\n", o);
        }
    }
}

以上代码中,print_options 函数会根据 getopt 从命令行参数列表中获取指定选项并输出执行结果,例如:

代码语言:bash
复制
$ gcc -abc

上述命令中,a 选项由 -a 提供,其他选项由 -bc 提供, getopt 将解析命令行参数,并获取相应的选项,调用 print_options 函数输出解析结果。

GetOptions 可通过传入参数 getopt_long_only 来指定在解析过程中是否采用短参数的方式,即只将参数解析为单个短选项和选项组,并利用 optind 参数来指定下一个要进行解析的参数。

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

相关·内容

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

前言 在程序中一般都会用到命令行选项, 我们可以使用getoptgetopt_long函数来解析命令行参数 getopt getopt主要用来处理短命令行选项, 例如..../test -a aa -b -c 输出结果如下: option a: aa option b unknown option getopt_long getopt_long支持长选项的命令行解析,...所为长选项就是诸如--help的形式, 使用该函数, 需要引入下面是函数原型: #include int getopt_long(int argc,.../test: invalid option -- 'o' unknown option username is -help 我们看到使用短选项标识符 - 指向长选项时, 程序还是会按短选项来处理, 即一个字符一个字符的解析...getopt_long_only 时, - 和 --都可以作用于长选项, 而使用 getopt_only 时, 只有 --可以作用于长选项.

61210
  • CC++ 命令解析getopt 方法详解和使用示例

    int optind, opterr, optopt; getopt 参数说明: argc:通常由 main 函数直接传入,表示参数的数量 argv:通常也由 main 函数直接传入,表示参数的字符串变量数组...optstring:一个包含正确的参数选项字符串,用于参数的解析。...字符,optopt 中包含的就是发现的无效选项字符 三、实例分析 让我们通过一系列的实例来掌握 getopt 方法的使用吧。 1....输入字符串转 int 由于 optarg 都是字符串类型的,所以当我们想要整型的输入参数时,会经常用到 atio() 这个方法,这里也简单介绍一下。...atoi (表示 ascii to integer) 是把字符串转换成整型数的一个函数,包含在 头文件中,使用方式如下: int num = atoi(optarg); 发布者:

    1.6K51

    Linux: Shell脚本实现支持长选项参数

    二、实现思路 为了在Shell脚本中支持长选项,我们可以使用两种主要方法: 使用getopt命令:getopt是一个外部命令,可以解析短选项和长选项。...手动解析参数:通过循环和字符串操作手动解析命令行参数。 三、使用getopt命令解析长选项 getopt命令支持长选项,并且可以处理复杂的参数解析需求。...解析命令行选项: 使用getopt -o SHORT_OPTS -l LONG_OPTS -- " 将解析结果赋值给变量PARSED_OPTS。...打印解析结果: 最后打印输入文件和输出文件的值。 五、手动解析长选项 如果不想使用getopt,也可以手动解析长选项。以下是一个示例: sh #!...使用getopt命令可以方便地解析短选项和长选项,而手动解析则更加灵活。通过这两种方法,可以使脚本的选项更加直观和易用,从而提高脚本的可读性和用户体验。

    23810

    Python中的 getopt模块

    python 的 getopt 模块是一个简单实用的命令行参数解析模块。实现命令解析功能的为模块中的getopt 方法。下面主要介绍一下这个getopt方法的使用。...getopt(args, shortopts, longopts=[])         getopt(args, options[, long_options]) -> opts, args         ...Long and short options may be mixed. getopt 方法的参数解释: args 参数,在这个方法中会获取 sys.argv[1:] 对应的所有命令行参数。...接收字符串类型的参数。若参数后面需要填写参数值,则使用冒号(:)表示。 example: "hp:u:" 则表示参数 -h 且后面无需参数值。而参数 -p 后面需要参数值。...若在定义参数中间出现,getopt方法会认为这之后的全部是为定义的参数。 使用方法举例: #!

    88631

    getopt(1) command

    1.简介 getopt 是一个广泛使用的命令行工具,用于解析复杂的命令行选项。它提供了一种标准化的方式来处理短选项和长选项,以及选项的参数,使得编写和维护命令行工具变得更加容易。...--:可选,用于明确区分 getopt 命令的选项和需要解析的选项字符串。 OPTSTRING:描述选项格式的字符串。 PARAMETERS:需要解析的实际命令行参数。...如果找不到此选项,则使用getopt的第一个不以'-'开头的参数作为短选项字符串。每个短选项字符后面可以跟一个冒号,表示它有一个必需的参数。后面跟两个冒号,表示它有一个可选参数。...set -- 设置位置参数,使得脚本可以使用标准的 1, 2, … 来访问命令行参数。 (2)带长选项的解析。 #!.../bin/bash OPTIONS=$(getopt -o ab:c --long alpha,beta:,gamma -- "$@") if [ $?

    7910

    使用cJSON解析JSON字符串

    JSON学习-使用cJSON解析 使用cJSON解析JSON字符串 一、为何选择cJSON 我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建...然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。...三、解析JSON格式; 还是在Linux下,使用C语言编程,先实现读文件的功能,然后开始JSON字符串解析。我们还是一步步来,先从简单的开始,万丈高楼起于平地嘛。...3,解析一个键值对; 首先是一个简单的键值对字符串,要解析的目标如下: {“firstName”:”Brett”} 要进行解析,也就是要分别获取到键与值的内容。...这样,我们就使用cJSON接口完成了结构体数组的解析工作。 详细代码见后文附带例程。

    1.7K20

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

    echo "Usage: `basename $0` [options] filename" esac done shift $(($OPTIND - 1)) getopts后面的字符串就是可以使用的选项列表...,每个字母代表一个选项,后面带:的意味着选项除了定义本身之外,还会带上一个参数作为选项的值,比如d:在实际的使用中就会对应-d 30,选项的值就是30;getopts字符串中没有跟随:的是开关型选项,不需要再指定值...5. getopt往往需要跟set配合使用 6. getopt -o的选项注意一下 7. getopts 使用语法简单,getopt 使用语法较复杂 8. getopts 不会重排所有参数的顺序...# mkdir -f #不成功,因为-f会被mkdir当作选项来解析,这时就可以使用 # mkdir -- -f 这样-f就不会被作为选项。...TEMP=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \ -n 'example.bash' -- "$@"` if [ $? !

    10.9K90
    领券