Java程序shell启动脚本文件中路径带空格怎么办?

bat里面给classpath和-DXXX_HOME两个参数值都加了双引号就可以了,但是linux下的shell还是不行,不知道该怎么办。

export START_CMD="${_JAVACMD} ${JAVA_OPTS} ${SUNJMX} -classpath "$XXX_CLASSPATH" -DXXX_HOME="$XXX_HOME" test.AppMain"
就是上面这一行,该怎么改?

export START_CMD="${_JAVACMD} ${JAVA_OPTS} ${SUNJMX} -classpath ${XXX_CLASSPATH} -DXXX_HOME=${XXX_HOME} test.AppMain"追问

还是不可以,因为XXX_CLASSPATH中带空格,在启动test.AppMain时,此程序main方法的路径变成两个空格之间。
比如:
XXX_CLASSPATH="AAAA BBBB/lib/test.jar:AAAA BBBB/lib/log4j.jar"
启动的时候就报无法找到 BBBB/lib/test.jar:AAAA 下面的test.AppMain类

追答

你这串写的太长了,我是在看不懂什么意思。
貌似你 给START_CMD赋值,赋值的同时 又给 ${XXX_CLASSPATH}赋值 然后
${XXX_CLASSPATH} 赋的值是${XXX_HOME} test.AppMain 赋过来的。
我劝你,还是把其中涉及的变量单独取出来,别写一块。
整理好以后再调用。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-27
$XXX_HOME外面的双引号要转义,最好写成\"${XXX_HOME}\"追问

还是不可以,因为XXX_CLASSPATH中带空格,在启动test.AppMain时,此程序main方法的路径变成两个空格之间。
比如:
XXX_CLASSPATH="AAAA BBBB/lib/test.jar:AAAA BBBB/lib/log4j.jar"
启动的时候就报无法找到 BBBB/lib/test.jar:AAAA 下面的test.AppMain类

追答

这看来就比较麻烦了。先执行XXX_HOME=`echo "${XXX_HOME}" | sed -e "s/ /\\ /g"`试试看

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网