"No such file or directory" 当 运行 java 来自 shell 脚本
"No such file or directory" when running java from shell script
我正在尝试 运行 来自亚马逊 Linux 机器的脚本。该脚本像这样调用 checkstyle(在名为 eval.sh 的脚本中):
CHECKSTYLE="java -jar /home/ec2-user/grader/ext/checkstyle-6.15-all.jar"
CHECKSTYLE_RULES="/home/ec2-user/grader/config/checks.xml"
CHECKSTYLE_OUT="quality.log"
"${CHECKSTYLE}" -c "${CHECKSTYLE_RULES}" -f xml -o "${CHECKSTYLE_OUT}" $(find "${_toCheck}" -name "*.java") 2>"quality.err"
当我 运行 这样做时,我在 quality.err 中收到以下错误:
./grader/eval.sh: line 10: java -jar /home/ec2-user/grader/ext/checkstyle-6.15-all.jar: No such file or directory
我已经尝试 运行 直接在终端中执行相同的命令并且它正在运行。 checkstyle-6.15-all.jar 和 checks.xml 都在它们应该在的位置。
什么可能导致此问题?
当您调用 "${CHECKSTYLE}"
时,shell 认为这是您的命令 运行。没有这样的文件名,其中包含空格和选项。如果您简单地将其调用为 ${CHECKSTYLE}
(去掉引号),shell 将像往常一样处理空白并将其拆分为适当的部分以创建流程。
将 "${CHECKSTYLE}"
更改为 ${CHECKSTYLE}
(不带引号)。
您将 CHECKSTYLE 变量的整个值作为单个单词传递(这就是引号的作用),因此 shell 正在寻找名为 java -jar
的相对目录,并正在尝试在该(不存在的)目录下找到路径为 home/ec2-user/grader/ext/checkstyle-6.15-all.jar
.
的文件
我正在尝试 运行 来自亚马逊 Linux 机器的脚本。该脚本像这样调用 checkstyle(在名为 eval.sh 的脚本中):
CHECKSTYLE="java -jar /home/ec2-user/grader/ext/checkstyle-6.15-all.jar"
CHECKSTYLE_RULES="/home/ec2-user/grader/config/checks.xml"
CHECKSTYLE_OUT="quality.log"
"${CHECKSTYLE}" -c "${CHECKSTYLE_RULES}" -f xml -o "${CHECKSTYLE_OUT}" $(find "${_toCheck}" -name "*.java") 2>"quality.err"
当我 运行 这样做时,我在 quality.err 中收到以下错误:
./grader/eval.sh: line 10: java -jar /home/ec2-user/grader/ext/checkstyle-6.15-all.jar: No such file or directory
我已经尝试 运行 直接在终端中执行相同的命令并且它正在运行。 checkstyle-6.15-all.jar 和 checks.xml 都在它们应该在的位置。
什么可能导致此问题?
当您调用 "${CHECKSTYLE}"
时,shell 认为这是您的命令 运行。没有这样的文件名,其中包含空格和选项。如果您简单地将其调用为 ${CHECKSTYLE}
(去掉引号),shell 将像往常一样处理空白并将其拆分为适当的部分以创建流程。
将 "${CHECKSTYLE}"
更改为 ${CHECKSTYLE}
(不带引号)。
您将 CHECKSTYLE 变量的整个值作为单个单词传递(这就是引号的作用),因此 shell 正在寻找名为 java -jar
的相对目录,并正在尝试在该(不存在的)目录下找到路径为 home/ec2-user/grader/ext/checkstyle-6.15-all.jar
.