我有一个包含5个必需参数(5个路径)和3个选项(-d用于调试的脚本,-l用于log4j重写,-s用于另一个重写)的脚本。在启动脚本中使用getopts时丢失了java主要参数
我正在用getopts进行管理。以下脚本被简化:
LOG4J_FILE=$DEFAULT_LOG4J_FILE
S_FILE=$DEFAULT_S_FILE
ECLIPSE_PROPS=
while getopts "l:s:d" flag; do
case "$flag" in
l) LOG4J_FILE="$OPTARG";;
s) S_FILE="$OPTARG";;
d) ECLIPSE_PROPS="-Xdebug ...";;
:) usage;;
?) usage;;
esac
done
shift $((OPTIND-1))
OPTIND=1
...
echo_and_eval $JAVA $ECLIPSE_PROPS -Dlog4.configuration=$LOG4J_FILE -Ds.file=$S_FILE -cp $CLASSPATH $MAIN_CLASS $ARGS
如果我只是把5个参数,它的工作原理。 如果我添加一个或两个可选参数(l或s),它可以工作。 如果我添加-d选项,我在Java主要方法中没有参数。
任何线索?这真让我抓狂。
用'bash -ex。/ script.sh'运行脚本来获取调试信息。 – anubhava 2014-10-02 09:33:12
我已经做到了,但无论如何,最终的java命令行对我来说似乎完全没问题。我在“java”主要方法中“sysout”args参数。它是空的。 – Zofren 2014-10-02 09:48:44
你能为此显示相关的Java代码吗? – anubhava 2014-10-02 09:51:04