./run.sh:
1. cp=warmonger-1.0.0.jar
2. cmmd="java -server -D64 -Xms200m -Xmx200m
-Dlog4j.configurationFile=$WARMONGER_HOME/etc/log4j2.xml
-classpath $cp warmonger.agent.WarmongerAgentApp"
3. echo $cmmd
执行结果:
dataq.agent.DataqAgentApp -Xmx200m
-Dlog4j.configurationFile=/warmonger/etc/log4j2.xml
-classpath warmonger-1.0.0.jar
“warmonger.agent.WarmongerAgentApp”没有出现。
我的意思是如果删除 echo,java 将抛出异常:找不到主类
最佳答案
当您echo $cmmd
时,您不会看到$cp
,因为shell 替换了cp
参数的值(warmonger-1.0.0.jar
) 分配给 cmmd
。
您可以转义美元符号,或者如果您不希望 shell 扩展参数则使用单引号。
关于Linux .sh 在回显时自动将局部变量设置为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51647811/