在shell脚本中传递java命令行参数
我有一个shell脚本,它试图运行java类。脚本如下所示:在shell脚本中传递java命令行参数,java,shell,Java,Shell,我有一个shell脚本,它试图运行java类。脚本如下所示: export VAL1="param1"; export VAL2="param2"; set JAVA_HOME set CLASSPATH exec ${JAVA_HOME}/bin/java \ -Dsun.net.inetaddr.ttl=1 \ -Dsun.net.inetaddr.negative.ttl=1 \ -Djava.io.tmpdir=<SOME-PATH>/tmp \ -Dfile
export VAL1="param1";
export VAL2="param2";
set JAVA_HOME
set CLASSPATH
exec ${JAVA_HOME}/bin/java \
-Dsun.net.inetaddr.ttl=1 \
-Dsun.net.inetaddr.negative.ttl=1 \
-Djava.io.tmpdir=<SOME-PATH>/tmp \
-Dfile.encoding=UTF-8 \
-XX:HeapDumpPath=<SOME-PATH>/var/output/logs/ \
-XX:+HeapDumpOnOutOfMemoryError \
\
${JVM_ARGS} \
com.cron.cronRunner \
;
exit $?
export VAL1=“param1”;
export VAL2=“param2”;
设置JAVA_主页
设置类路径
exec${JAVA_HOME}/bin/JAVA\
-Dsun.net.inetaddr.ttl=1\
-Dsun.net.inetaddr.negative.ttl=1\
-Djava.io.tmpdir=/tmp\
-文件编码=UTF-8\
-XX:HeapDumpPath=/var/output/logs/\
-XX:+HEAPDUMPONAUTOFMEMORYERROR\
\
${JVM_ARGS}\
com.cron.cronRunner\
;
退出$?
我希望将VAL1和VAL2作为命令行参数传递给下面调用的cronRunner类。我尝试使用$VAL1和$VAL2,但是,当我尝试取消引用参数时,类抛出一个NPE
我做错了什么?我就是这样尝试的
编辑:
export VAL1="param1";
export VAL2="param2";
set JAVA_HOME
set CLASSPATH
exec ${JAVA_HOME}/bin/java \
-Dsun.net.inetaddr.ttl=1 \
-Dsun.net.inetaddr.negative.ttl=1 \
-Djava.io.tmpdir=<SOME-PATH>/tmp \
-Dfile.encoding=UTF-8 \
-XX:HeapDumpPath=<SOME-PATH>/var/output/logs/ \
-XX:+HeapDumpOnOutOfMemoryError \
\
${JVM_ARGS} \
com.cron.cronRunner $VAL1 $VAL2 \
;
exit $?
export VAL1=“param1”;
export VAL2=“param2”;
设置JAVA_主页
设置类路径
exec${JAVA_HOME}/bin/JAVA\
-Dsun.net.inetaddr.ttl=1\
-Dsun.net.inetaddr.negative.ttl=1\
-Djava.io.tmpdir=/tmp\
-文件编码=UTF-8\
-XX:HeapDumpPath=/var/output/logs/\
-XX:+HEAPDUMPONAUTOFMEMORYERROR\
\
${JVM_ARGS}\
com.cron.cronRunner$VAL1$VAL2\
;
退出$?
将参数放在主类名称后面:
...
${JVM_ARGS} \
com.cron.cronRunner $VAL1 $VAL2\
;
编辑:我在编辑OP之前发布了这篇文章,以反映相同的内容请在您尝试使用$VAL1和$VAL2的地方发布呼叫-通常,这是正确的方法。向我们展示您如何尝试引用cronRunner中的参数。另外,这是使用
bash
、ksh
,还是其他工具运行的?已修复。我做的试验是正确的。我在传递参数时输入了一个错误