2014-11-05 134 views
1

我想要一个bash脚本,从文件中读取Java参数,并与他们执行的java命令bash脚本从文件中读取并执行

jvm_arguments=$(cat jvm-args) 
exec java $jvm_arguments 

的问题是,它不与这方面的工作非常出色jvm-args文件:

-Xms128m -Xmx512m -Dhostname=$(hostname) 

命令主机名未执行并被替换。

如何获取执行的hostname命令?所以我得到:

exec java -Xms128m -Xmx512m -Dhostname=MyMachine 

谢谢。

+1

要小心有了这个。有一个原因是bash不会自动执行这样的事情:它可能是一个巨大的安全漏洞。 – John1024 2014-11-05 22:55:19

+0

'InetAddress.getLocalHost()。getHostName()'可能是另一种解决方案(http://download.java.net/jdk7/archive/b123/docs/api/java/net/InetAddress.html#getLocalHost%28%29 ) – 2014-11-05 23:22:00

回答

2

使用eval来评估您的运行​​时变量。这样的(未测试):

jvm_arguments=$(cat jvm-args) 
eval java $jvm_arguments 
+0

如果仅使用bash,'jvm_arguments = $( 2014-11-05 22:54:50

1

存储整个命令文件,例如,run.sh

exec java -Xms128m -Xmx512m -Dhostname=$(hostname) ... 

如果你想终止当前bash过程中,请在致电. run.sh