【发布时间】:2012-11-21 10:02:34
【问题描述】:
我目前的任务是创建一些命令行帮助实用程序供我们的内部开发团队使用。但是,我想知道创建 unix 命令行工具的最佳实践。我已尝试查看git source code,以获取有关如何读取参数并相应地显示消息的示例。但是,我正在寻找一个清晰的模板来创建工具、安全地读取参数以及在用户输入不正确的参数或--help 我想显示帮助消息时显示标准的“帮助”消息。是否有标准库用于读取-abcFGH 和--parameter 并根据传递的参数切换启动哪个进程?
命令行:
git
或
git --help
输出:
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[-c name=value] [--help]
<command> [<args>]
...
命令行:
MyTool CommandName --CommandArgs
输出:
无论该特定命令做什么。
到目前为止我的工作:
代码:
int main(int argc, char **argv)
{
if(argc < 2)
helpMessage();
char* commandParameter = argv[1];
if (strncmp(argv [1],"help", strlen(commandParameter)) == 0)
helpMessage();
else if (strncmp(argv [1],"pull", strlen(commandParameter)) == 0)
pull();
else
helpMessage();
}
理想的应该是这样的:
代码:
int main(int argc, char **argv)
{
MagicParameters magicParameters = new MagicParameters(argv);
switch(magicParameters[1])
{
case command1:
Command1();
break;
case ...
case help:
default:
HelpMessage();
break;
}
}
【问题讨论】:
-
你看过
getopt()吗?如果没有,请检查getopt_long,这是您想要的,也更容易眼睛。
标签: c linux unix parameters command-line-arguments