首页 > 解决方案 > 如何在 kotlin 中使用 args4j 解析参数?

问题描述

我需要从命令行解析信息,所以我选择 args4j 库。命令行格式:ls [-l] [-h] [-r] [-o output.file] directory_or_file。

我试图创建选项然后解析。当我只得到“-ls”时,输出是正确的,但是当我得到“-ls -l”(超过1个参数)时,程序不会停止,我可以在命令行上输入,直到我强行停止程序。我将不胜感激任何帮助!

public class Settings {
    @Option(name = "-ls", usage = "Init command")
    var command  = false
    @Option(name = "-l", usage = "Long flag")
    var longFlag  = false
    @Option(name = "-h")
    var humanReadable = false
    @Option(name = "-r")
    var reversed = false

}
fun main() {
    val settings = Settings()
    val parser = CmdLineParser(settings)
    var args = mutableListOf<String>()
    val input = readLine()
    parser.parseArgument(input)
    print("${settings.command} ${settings.longFlag}")

标签: kotlinargs4j

解决方案


这可能无法完全回答您的问题,但如果您的平台允许,您可以尝试将参数添加为环境变量。在微服务中定义它们通常更方便,Makefile或者Dockerfile如果您正在使用微服务。或者您可以将它们添加到 app 命令前面,以将它们作为环境变量推送到应用程序中。语法是:

FOO=bar appcommand

使用 kotlin,您可以使用以下示例读取环境变量:

System.getenv("FOO")

将返回“酒吧”。


推荐阅读