Linux .sh 在回显时自动将局部变量设置为空

标签 linux shell sh

./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/

相关文章:

linux - keepalived 和两个事件服务器

php - 如何从 php/html 执行 shell 脚本?

linux - 根据扩展名将文件移动到目录

c - 管道实现停留在 dup2 命令

linux - 如果 ! mkdir -p $APPLICATION_DIRECTORY/配置文件

php - 如何在 Earthlink Linux 服务器上安装 PHP?

linux - 用于在每小时文件夹中移动日志文件的脚本

c++ - eclipse GDT : undefined reference to library components

linux - 如何转义密码中的双引号和感叹号?

linux - 如何使用 shell 脚本从 dhcp.lease 文件中提取 IP 地址、MAC 地址和名称?