命令列:獲取使用者命令列引數Option
阿新 • • 發佈:2019-02-12
執行引數:
程式碼
package com.donews.data.hbaseuser
import java.time.LocalDate
import com.donews.data.util.Dates
import org.apache.commons.cli.{GnuParser, HelpFormatter, Options}
object JdkLogTest{
def main(args: Array[String]): Unit = {
//預設啟動時間為昨天和今天
val defaultInterval = IndexedSeq(LocalDate.now ().minusDays(1), LocalDate.now())
.map(_.toString)
.mkString("/")
//Option[T]是容器
val options = new Options()
.addOption("h", "help", false, "幫助")
.addOption("i", "interval", true, s"時間區間 ($defaultInterval)")
.addOption("s", "source", true, "源資料名稱")
val parser = new GnuParser()
val cmdLine = parser.parse (options, args)
val interval = cmdLine.getOptionValue("i", defaultInterval).split("/")
val (startDay, endDay) = (LocalDate.parse(interval(0)), LocalDate.parse(interval(1)))
println("有 -i 引數時候,且有輸入值。如果沒有輸入值則為預設值")
for (day <- Dates.dateRange(startDay, endDay)) {
println(day)
}
if (cmdLine.hasOption ("s")) {
println("有 -s 引數時候")
println(cmdLine.getOptionValue("source"))
}
if (cmdLine.hasOption("h")) {
val formatter = new HelpFormatter()
println("有 -h 引數時候")
formatter.printHelp("StreamingHbase", options)
System.exit(0)
}
}
}
執行結果
有 -i 引數時候,且有輸入值。如果沒有輸入值則為預設值
2016-07-01
2016-07-02
2016-07-03
2016-07-04
有 -s 引數時候
'myfilesource'
有 -h 引數時候
usage: StreamingHbase
-h,--help 幫助
-i,--interval <arg> 時間區間 (2016-10-09/2016-10-10)
-s,--source <arg> 源資料名稱
Process finished with exit code 0
如果您喜歡我寫的博文,讀後覺得收穫很大,不妨小額贊助我一下,讓我有動力繼續寫出高質量的博文,感謝您的讚賞!微信