我需要从命令行解析信息,因此我选择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}")
答案 0 :(得分:0)
这可能无法完全回答您的问题,但是如果您的平台允许,则可以尝试将参数添加为环境变量。如果您正在使用微服务,通常更方便在Makefile
或Dockerfile
中定义它们。或者,您可以将它们添加到app命令的前面,以将它们作为环境变量推送到应用程序中。语法为:
FOO=bar appcommand
使用kotlin,您可以使用以下示例读取环境变量:
System.getenv("FOO")
将返回“ bar”。