如何用java中的args构建rerun.sh文件?

时间:2015-12-10 23:11:25

标签: java bash

我想为我的java代码构建一个rerun.sh脚本。但是我的java代码需要5个参数。我想构建一个可以调用我的java类的重新运行,如:

java ­cp myjar.jar javaClassName <arg0> <arg1> <arg2> <arg3> <arg4>

所以当我运行我的rerun.sh时,我只需要输入:

./rerun <arg0> <arg1> <arg2> <arg3> <arg4>

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:2)

一个非常简单的脚本,带有基本错误检查

#! /bin/bash

if [ $# -ne 5 ]; then
    echo "usage $0: <arg1> <arg2> <arg3> <arg4> <arg5>"
    exit 1
fi

java ­-cp myjar.jar javaClassName $1 $2 $3 $4 $5

答案 1 :(得分:0)

为避免单词拆分和glob扩展,您需要在脚本中引用参数:

#!/bin/sh

if [ $# -eq 5 ]; then
    command "$1" "$2" "$3" "$4" "$5"
fi

shell提供了一种代表你这样做的方法(使用它!):

#!/bin/sh

if [ $# -eq 5 ]; then
    command "$@"
fi

为了说明为什么需要引用,让我们将command定义为以下shell函数:

command() { echo $#; }

如果我们调用上面两个脚本中的任何一个,我们得到输出5

./script1 a b '*' c 'd e'
./script2 a b '*' c 'd e'

但是,如果我们没有使用引号,那么*会扩展到当前目录中的所有文件(如果目录为空,则只展示*)并且分词会表示将de视为脚本的单独参数。