0403-057第21行的语法错误:不期望“fi”

时间:2017-04-14 05:32:23

标签: shell aix hp-ux

我找不到此脚本错误的根本原因。 有谁能够帮我?提前致谢。 这是整个脚本的详细信息。

#!/bin/sh

CWD=`pwd`
LAUNCH_DIRECTORY=`eval dirname $0`
cd $LAUNCH_DIRECTORY
LAUNCH_DIRECTORY=`pwd`
cd $CWD

if [ -d "${LAUNCH_DIRECTORY}/java/bin" ]; then
  JAVA_HOME=${LAUNCH_DIRECTORY}/java
fi

if [ "${JAVA_HOME}" != "" ]; then
  PATH=${JAVA_HOME}/bin:${PATH}
fi

JAVA_VERSION=$(java -version 2>&1 | grep -i version | \
               cut -d'"' -f2 | cut -         d'.' -f2)

if [ -z "${JAVA_VERSION}" ] || [ "${JAVA_VERSION}" -lt 8 ]; then
  YAB_JAVA_OPTS="-XX:MaxPermSize=256m ${YAB_JAVA_OPTS}"
fi

export TERM=xterm

java ${YAB_JAVA_OPTS} \
     -Dlaunch.dir="${LAUNCH_DIRECTORY}" \
     -jar "${LAUNCH_DIRECTORY}/lib/yab-loader.jar" ${YAB_OPTS} ${1+"$@"}

1 个答案:

答案 0 :(得分:0)

 if [ -z "${JAVA_VERSION}" ] || [ "${JAVA_VERSION}" -lt 8 ]; then

不正确。替换 - 例如 - 通过

if [ "${JAVA_VERSION:-0}" -lt 8 ]; then

其他可能性:

 if ( [ -z "${JAVA_VERSION}" ] || [ "${JAVA_VERSION}" -lt 8 ] ); then

或者像这样:

 if [ -z "${JAVA_VERSION}" -o "${JAVA_VERSION}" -lt 8 ]; then

或者这个:

 [ -z "${JAVA_VERSION}" ] || [ "${JAVA_VERSION}" -lt 8 ] && YAB_JAVA_OPTS="-XX:MaxPermSize=256m ${YAB_JAVA_OPTS}"

原因:"参数"到if必须是一个命令。你写的是由||连接的两个命令。

除此之外,变量JAVA_VERSION的赋值中缺少结束的parenthisis。