加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

运用optparse高效完成任务

发布时间:2021-05-23 13:42:51 所属栏目:教程 来源:互联网
导读:如果你曾经写过命令行程序,你可能会知道,一般来说,你所选择的语言有一个叫做 optparse 的库或模块。它是提供给程序员的,所以作为命令的一部分输入的选项(比
副标题[/!--empirenews.page--]

如果你曾经写过命令行程序,你可能会知道,一般来说,你所选择的语言有一个叫做 optparse 的库或模块。它是提供给程序员的,所以作为命令的一部分输入的选项(比如 -v 或 --verbose)可以与命令的其他部分进行解析。这可以帮助你的代码从一个子命令或参数中获取一个选项。

当为 FinSH 编写一个命令时,optparse 包希望使用这种格式:

MSH_CMD_EXPORT_ALIAS(pkgs, pkgs,thisistest cmd.);

你可以使用长形式或短形式,或者同时使用两种形式来实现选项。例如:

staticstruct optparse_long long_opts[]=

{

    {"help"        ,'h', OPTPARSE_NONE},// Long command: help, corresponding to short command h, without arguments.

    {"force-update",  0, OPTPARSE_NONE},// Long comman: force-update, without arguments

    {"update"      ,  0, OPTPARSE_NONE},

    {"list"        ,  0, OPTPARSE_NONE},

    {"wizard"      ,  0, OPTPARSE_NONE},

    {"upgrade"     ,  0, OPTPARSE_NONE},

    {"printenv"    ,  0, OPTPARSE_NONE},

    { NULL         ,  0, OPTPARSE_NONE}

};

创建完选项后,写出每个选项及其参数的命令和说明:

staticvoid usage(void)

{

    rt_kprintf("usage: env.py package [-h] [--force-update] [--update] [--list] [--wizard]n");

    rt_kprintf("                      [--upgrade] [--printenv]nn");

    rt_kprintf("optional arguments:n");

    rt_kprintf("  -h, --help      show this help message and exitn");

    rt_kprintf("  --force-update  force update and clean packages, install or remove then");

    rt_kprintf("                  packages by your settings in menuconfign");

    rt_kprintf("  --update        update packages, install or remove the packages by yourn");

    rt_kprintf("                  settings in menuconfign");

    rt_kprintf("  --list          list target packagesn");

    rt_kprintf("  --wizard        create a new package with wizardn");

    rt_kprintf("  --upgrade       upgrade local packages list and ENV scripts from git repon");

    rt_kprintf("  --printenv      print environmental variables to checkn");

}

下一步是解析。虽然你还没有实现它的功能,但解析后的代码框架是一样的:

int pkgs(int argc,char**argv)

{

int ch;

int option_index;

struct optparse options;

 

if(argc ==1)

{

usage();

return RT_EOK;

}

 

optparse_init(&options, argv);

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!