运用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); (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |