【问题标题】:How to make argument mandatory for script to run java application如何使脚本强制参数以运行 java 应用程序
【发布时间】:2014-07-31 13:58:31
【问题描述】:

我的脚本叫做report_startDate

它有以下一行:

$JRE_ROOT/bin/java -cp /home/me/report/config/:/home/me/report/jar/reporting-1.0-SNAPSHOT.jar com.me.project.report.Main $1

$1 使我能够以./report_startDate 20140717 运行脚本。

但脚本也可以在没有日期的情况下运行。我想让运行此脚本的人强制提供日期。我可以用什么替换 $1 以强制提供日期。

我不想在代码中添加逻辑,而是在 shell 脚本中添加逻辑,因为有多个脚本,一个有日期,一个没有日期。

【问题讨论】:

    标签: java shell unix classpath


    【解决方案1】:

    在您的 public static void main(String[] args) 方法中,您应该从这样的内容开始。

    if (args == null || args.length != 1) throw new IllegalArgumentException("need one and only one input param...");
    

    【讨论】:

    • args 会成为null 吗? :)
    • 不记得所以把它放进去。没有 args 永远不会为空
    • 那么如果不传参数会怎样呢? :)
    • 你的 args 长度将是 0 而不是 1,你会得到一个 IllegalArgumentException 回到控制台
    • 我正在寻找如何在脚本而不是代码中实现这一点。编辑了问题。
    【解决方案2】:

    你可以检查第一个参数中是否有日期,像这样:

    #first argument should test if the date is valid
    date -d $1 &> /dev/null
    
    #if exit code is 0 then the date is valid
    if [[ "$?" ==  "0" ]] ; then
        #execute your java program with $1
    else
        echo "please insert a date as first argument"
    fi
    

    【讨论】:

      猜你喜欢
      • 2018-10-19
      • 1970-01-01
      • 2023-04-04
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2011-11-20
      相关资源
      最近更新 更多