shell - 在父 shell 脚本中重新分配导出的变量以运行 2 个不同的子 shell 脚本

标签 shell tomcat jvm export

我试图通过重新分配 start_port 从 1 个父 shell 脚本运行 2 个 Tomcat 实例,但第二个 JVM 没有选择重新分配的 start_port

#!/bin/bash

export CATALINA_BASE_PORT=10000
export JAVA_OPTS='-Dport.http.nonssl=$CATALINA_BASE_PORT'
./apache-tomcat-8.0.5/bin/startup.sh

sleep 5

export CATALINA_BASE_PORT=20000
export JAVA_OPTS='-Dport.http.nonssl=$CATALINA_BASE_PORT'
./apache-tomcat-8.0.5/bin/startup.sh

Tomcat 的第一个实例启动正常,但第二个实例无法启动,因为它选择与第一个相同的端口,10000 并抛出异常,例如端口 10000 已在使用中。请指教。谢谢。

最佳答案

试试双引号。变量替换应该可以正常工作:

$ export CATALINA_BASE_PORT=10000
$ export JAVA_OPTS='-Dport.http.nonssl=$CATALINA_BASE_PORT'
$ echo $JAVA_OPTS 
-Dport.http.nonssl=$CATALINA_BASE_PORT


$ export CATALINA_BASE_PORT=10000
$ export JAVA_OPTS="-Dport.http.nonssl=$CATALINA_BASE_PORT"
$ echo $JAVA_OPTS 
-Dport.http.nonssl=10000

关于shell - 在父 shell 脚本中重新分配导出的变量以运行 2 个不同的子 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38784230/

相关文章:

java - 从 Java 程序内部顺序执行 jar 文件

linux - Tomcat6 -> 如何将项目放入根文件夹?

macos - 用于在启动时在 Mac 上自动启动 tomcat 的 plist

java - Java如何初始化String字面量

shell - 使用 printf 指定宽度以生成干净的外观

java - 在 Java 编译时将文件内容读入内存

java - java.lang.Class 方法线程安全吗?

macos - 如何从 OS X 10.6 的终端检测屏幕是否已锁定或屏幕保护程序是否处于事件状态?

linux - bash 中 ./name.sh 旁边的变量

python - 从 Python 到 Mathematica 再返回