如何在Kotlin中使用args4j解析参数?

时间:2019-04-27 16:13:07

标签: 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}")

1 个答案:

答案 0 :(得分:0)

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

FOO=bar appcommand

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

System.getenv("FOO")

将返回“ bar”。