env 파일과 실행 파일이라는 두 개의 파일이 있습니다. Ubuntu 서버에 배포하면 오류가 발생합니다.
./start-admin: 10행: 구문 오류: 예기치 않은 파일 끝
배포한 다음 파일 끝에 개행을 추가하면 오류가 표시됩니다. 제거하면 오류가 사라집니다. 다시 배포하고 줄바꿈을 추가하지 않으면 여전히 오류가 표시되지만 줄바꿈을 추가하면 오류가 사라집니다. 이 문제의 원인은 무엇입니까?
아래는 내 스크립트입니다.
환경:
if [ "x${WD}" == "x" ]; then echo "missing required conf \"\${WD}\"" >&2; exit -1; fi
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
export JAR_FILE="$WD/mfa-admin.jar"
export MYSQL_URL=url1
export MYSQL_USER=root
export MYSQL_PASSWORD=pwd
export DB_URL=url2
export DB_USER=user
export DB_PASSWORD=pwd2
export EMAIL_HOST=mail-inbox
export EMAIL_PORT=25
export EMAIL_PERMISSION=false
export FAKE_EMAIL=email
export ACTIVATION_URL=url
export BIND_HOST=0.0.0.0
export BIND_PORT=8282
시작:
WD=`dirname $0`;
JAVA_OPTS=""
if [ -r "$WD/admin.env.conf" ]; then
. $WD/admin.env.conf
fi
# required stuff
if [ "x${JAVA_HOME}" == "x" ]; then echo "missing required conf \"\${JAVA_HOME}\"" >&2; exit -1; fi
if [ "x${JAR_FILE}" == "x" ]; then echo "missing required conf \"\${JAR_FILE}\"" >&2; exit -1; fi
if [ "x${MYSQL_URL}" == "x" ]; then echo "missing required conf \"\${MYSQL_URL}\"" >&2; exit -1; fi
if [ "x${MYSQL_USER}" == "x" ]; then echo "missing required conf \"\${MYSQL_USER}\"" >&2; exit -1; fi
if [ "x${MYSQL_PASSWORD}" == "x" ]; then echo "missing required conf \"\${MYSQL_PASSWORD}\"" >&2; exit -1; fi
if [ "x${DB_URL}" == "x" ]; then echo "missing required conf \"\${DB_URL}\"" >&2; exit -1; fi
if [ "x${DB_USER}" == "x" ]; then echo "missing required conf \"\${DB_USER}\"" >&2; exit -1; fi
if [ "x${DB_PASSWORD}" == "x" ]; then echo "missing required conf \"\${DB_PASSWORD}\"" >&2; exit -1; fi
if [ "x${EMAIL_HOST}" == "x" ]; then echo "missing required conf \"\${EMAIL_HOST}\"" >&2; exit -1; fi
if [ "x${EMAIL_PORT}" == "x" ]; then echo "missing required conf \"\${EMAIL_PORT}\"" >&2; exit -1; fi
if [ "x${EMAIL_PERMISSION}" == "x" ]; then echo "missing required conf \"\${EMAIL_PERMISSION}\"" >&2; exit -1; fi
if [ "x${FAKE_EMAIL}" == "x" ]; then echo "missing required conf \"\${FAKE_EMAIL}\"" >&2; exit -1; fi
if [ "x${ACTIVATION_URL}" == "x" ]; then echo "missing required conf \"\${ACTIVATION_URL}\"" >&2; exit -1; fi
if [ "x${BIND_HOST}" == "x" ]; then echo "missing required conf \"\${BIND_HOST}\"" >&2; exit -1; fi
if [ "x${BIND_PORT}" == "x" ]; then echo "missing required conf \"\${BIND_PORT}\"" >&2; exit -1; fi
JAVA_OPTS="${JAVA_OPTS} -Dmysql.URL=\"${MYSQL_URL}\" "
JAVA_OPTS="${JAVA_OPTS} -Dmysql.USER=\"${MYSQL_USER}\" "
JAVA_OPTS="${JAVA_OPTS} -Dmysql.PASSWORD=\"${MYSQL_PASSWORD}\" "
JAVA_OPTS="${JAVA_OPTS} -Ddb.URL=\"${DB_URL}\" "
JAVA_OPTS="${JAVA_OPTS} -Ddb.USER=\"${DB_USER}\" "
JAVA_OPTS="${JAVA_OPTS} -Ddb.PASSWORD=\"${DB_PASSWORD}\" "
JAVA_OPTS="${JAVA_OPTS} -DEMAIL_HOST=\"${EMAIL_HOST}\" "
JAVA_OPTS="${JAVA_OPTS} -DEMAIL_PORT=\"${EMAIL_PORT}\" "
JAVA_OPTS="${JAVA_OPTS} -DEMAIL_PERMISSION=\"${EMAIL_PERMISSION}\" "
JAVA_OPTS="${JAVA_OPTS} -DFAKE_EMAIL=\"${FAKE_EMAIL}\" "
JAVA_OPTS="${JAVA_OPTS} -DACTIVATION_URL=\"${ACTIVATION_URL}\" "
JAVA_OPTS="${JAVA_OPTS} -DBIND_HOST=\"${BIND_HOST}\" "
JAVA_OPTS="${JAVA_OPTS} -DBIND_PORT=\"${BIND_PORT}\" "
JAVA="$JAVA_HOME/bin/java"
eval \"$JAVA\" $JAVA_OPTS -cp "${WD}:${JAR_FILE}" VertxNode
답변1
이 메시지를 받은 이유는 스크립트, , 또는 `
문자열 이 일치하지 않기 때문입니다 '
. "
if/then/fi, do/while 또는 case/esac 문이 일치하지 않는 경우에도 이런 일이 발생할 수 있습니다. 스크립트를 다시 확인해 보겠습니다.