【问题标题】:How should an application parse a list of filenames from cmdline args?应用程序应该如何从命令行参数解析文件名列表?
【发布时间】:2021-04-08 12:35:24
【问题描述】:

我想编写一个应用程序 my_app,它从 cmdline 获取命名选项列表和文件名列表,例如,

% my_app --arg_1 arg_1_value filename_1 filename_2

文件名是最后一个参数,与任何命名选项无关。

从我工作过的 cmdline 解析器,例如 Golang 中的 flag,似乎解析器只会提取配置的参数,我需要识别通过原始 argv[] 列表手动遍历文件名列表。

我想问一下是否有解析器(或我可能忽略的选项)也可以提取这些文件名,或者它们只返回未处理的参数,因此,我可以假设这些是文件名。

【问题讨论】:

  • 如果有一些细节,比如您使用的语言,这将更容易回答。
  • 我已经编辑了问题,以包含 Golang 的标志作为示例
  • 好的,我尝试了一个答案。但我有点困惑:该函数为您提供了一个切片,其中包含您想要的参数。它还能做什么?

标签: parsing filenames cmdline-args


【解决方案1】:

Golang flag 模块使尾部参数可用作切片 flag.Args,它是 os.Args 的尾部。

这是命令行参数解析器工作的一种非常典型的方式,尽管细节会因语言而异。例如,标准 C 库参数解析器提供全局 optind,它是 argv 中第一个非标志参数的索引。

【讨论】:

  • 谢谢! Golang 中的 flag.Args 和 C 中的 optind 正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2016-12-12
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
相关资源
最近更新 更多