【问题标题】:How To Format Command Line Argument Key Value Pairs如何格式化命令行参数键值对
【发布时间】:2013-08-09 13:19:05
【问题描述】:

命令行参数的典型格式是:

myApp --myArg=myValue

如果我想通过命令行传入一组键值对怎么办?比如:

myApp --myList={arg1=val1;arg2=val2;arg3=val3...}

自从there seems to be no standard for this sort of thing 以来,任何人都可以提供具有这种命令行参数输入的常用实用程序的示例吗?我浏览了一些手册页,但没有找到。

编辑:我想知道输入应该如何格式化以及帮助文本可能是什么样子。

【问题讨论】:

    标签: command-line format standards command-line-arguments


    【解决方案1】:

    我认为这在很大程度上取决于您如何解析程序中的参数。

    以下是一些程序接受多个键值对值的示例。

    man php:

       --define foo[=bar]
       -d foo[=bar]   Define INI entry foo with value bar
    

    人混帐:

       -c <name>=<value>
           Pass a configuration parameter to the command. The value given will
           override values from configuration files. The <name> is expected in
           the same format as listed by git config (subkeys separated by
           dots).
    

    对于这两者,可以将多个 -d-c 参数传递给程序,这使您能够向程序提供键值对列表。

    IMO,只要它有效并且有据可查,拥有自己的程序接受键值对列表的风格并不是什么大问题。 :)

    P.S.:我认为这个问题放在Programmers Stack Exchange 上比放在 SO 上更合适。请参阅herehere

    【讨论】:

      【解决方案2】:

      如果应用需要这么多参数,我会使用配置文件而不是在命令行中传递它们:

      myApp --config=file.cnf

      这种方法有以下优点:

      • 灵活性 - 您可以为不同的调用准备一堆配置,然后直接使用它们,
      • 引用没有问题 - 如果命令行参数包含空格、双引号、 或其他特殊字符,总是很痛苦,
      • 简单 - 您可以控制配置文件格式,例如 INI、JSON、XML 等。它很容易创建,并且像解析命令行一样容易解析——如果不是更容易的话,
      • 安全性 - 如果任何参数可能是敏感的,它在显示命令行参数的工具中是不可见的。

      【讨论】:

        猜你喜欢
        • 2021-03-31
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多