在bash shell脚本中,我尝试了这两个版本:
java -jar abc.jar&
和
CMD="java -jar abc.jar&"
$CMD
第一个版本有效,第二个版本抱怨无法找到abc.jar。为什么呢?
答案 0 :(得分:1)
命令从shell脚本中的当前目录运行。
这就是测试脚本中第一个命令工作的原因。
第二个命令可能无效,因为java
中不存在${PATH}
或abc.jar
中${CLASSPATH}
不在echo
。您可以set +x
这些环境变量或bash
来调试{{1}}脚本。
答案 1 :(得分:1)
Bash(和其他人)不允许你在变量的值内进行后台处理(&
)(也不允许你以那种方式或管道进行重定向)。您应该避免将命令放入变量中。有关其他信息,请参阅BashFAQ/050。
您收到的实际错误消息是什么?我打赌它类似于“abc.jar& not found”(注意&符号),因为&符号被视为文件名中的一个字符。
此外,脚本的当前目录是从运行的目录 - 不它所在的目录。您应该明确要包含文件的目录。
java -jar /path/to/abc.jar&