我是 bash 的新手。我正在尝试配置 searchguard(elasticsearch 的插件)。为此,我需要运行 sgadmin.sh 文件。以下是文件的内容。
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BIN_PATH="java"
if [ -z "$JAVA_HOME" ]; then
echo "WARNING: JAVA_HOME not set, will use $(which $BIN_PATH)"
else
BIN_PATH="$JAVA_HOME/bin/java"
fi
"$BIN_PATH" $JAVA_OPTS -Dorg.apache.logging.log4j.simplelog.StatusLogger.level=OFF -cp "$DIR/../*:$DIR/../../../lib/*:$DIR/../deps/*" com.floragunn.searchguard.tools.SearchGuardAdmin "$@"
下面是我们运行 sgadmin.sh 文件时收到的错误。
$(BASH_SOURCE[0]): bad substitution
Error: Could not find or load main class com.floragunn.searchguard.tools.SearchGuardAdmin
谁能解释一下上面的代码是什么意思,更具体地说是最后一行
"$BIN_PATH" $JAVA_OPTS -Dorg.apache.logging.log4j.simplelog.StatusLogger.level=OFF -cp "$DIR/../*:$DIR/../../../lib/*:$DIR/../deps/*" com.floragunn.searchguard.tools.SearchGuardAdmin "$@"
注意:我们的环境是 Windows server 2012 要执行 .sh 文件,我们已将 SH 文件夹复制到 C:\ 驱动器并将其添加到环境变量(路径)中。