2014-11-05 135 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