将多个位置shell参数传递给java应用程序

将多个位置shell参数传递给java应用程序,java,linux,shell,Java,Linux,Shell,我编写了一个Java应用程序。由于复杂的原因,我无法将其作为可执行文件导出到Linux(由于CVS和环境促进实践)。我也无法通过'jar-cvmf'命令将主类路径添加到MANIFEST.MF,因为它没有安装在应用程序运行的Linux环境中(我无法控制安装的内容)。我找到的唯一其他选项是创建以下shell脚本: #!/bin/bash #check that parameters were passed if [ $# -lt 2 ]; then echo "" echo "No

我编写了一个Java应用程序。由于复杂的原因,我无法将其作为可执行文件导出到Linux(由于CVS和环境促进实践)。我也无法通过'jar-cvmf'命令将主类路径添加到MANIFEST.MF,因为它没有安装在应用程序运行的Linux环境中(我无法控制安装的内容)。我找到的唯一其他选项是创建以下shell脚本:

#!/bin/bash

#check that parameters were passed
if [ $# -lt 2 ]; then
    echo ""
    echo "Not enough arguments provided. You must have at least 2 arguments with ISO SQL time stamps."
    echo " After that you can have unlimited number of parameters for tools."
    echo ""
    exit 1  
fi 

echo "Recovering events that occurred between $@"

ROOT_DIR=_spool_generator
JAR_DIR=jar
mkdir $ROOT_DIR
mkdir $ROOT_DIR/$JAR_DIR

FULL_DIR=$ROOT_DIR/$JAR_DIR

cp /home/wma/jar/SpoolGenerator.jar ./$FULL_DIR/

echo $@

START=$1
END=$2

java -cp "./$FULL_DIR/SpoolGenerator.jar" com.btv.main.Driver $@ # --> does not work
#java -cp "./$FULL_DIR/SpoolGenerator.jar" com.btv.main.Driver "2001-02-12 18:15:00.0" "2001-02-12 19:15:00.0"  --> works
#java -cp "./$FULL_DIR/SpoolGenerator.jar" com.btv.main.Driver  "$START" "$END" --> works

echo "Execution is complete..."

exit

这里的关键问题是,应用程序使用的参数数量不限。当在Windows中直接将java应用程序作为可执行文件部署时,这非常有效,如果我指定Shell脚本采用的位置参数,则效果很好,但是如何从Linux脚本中将这些参数传递给java应用程序呢。由于timstamp的特殊字符,我必须将参数传递给用引号括起来的脚本,当参数传递给jar时,这似乎会导致一些异常的解析。非常感谢您的帮助。

引用您的变量扩展,如
“$@”
。Shellcheck对这些事情发出警告实际上,这似乎奏效了。我可以发誓我已经试过了,但也许我在指定论点的方式上弄错了。谢谢我以后也会去查的。