1. 程式人生 > >命令列:獲取使用者命令列引數Option

命令列:獲取使用者命令列引數Option

執行引數:

這裡寫圖片描述

程式碼

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

如果您喜歡我寫的博文,讀後覺得收穫很大,不妨小額贊助我一下,讓我有動力繼續寫出高質量的博文,感謝您的讚賞!微信

這裡寫圖片描述