我的服務器上有一個bash腳本,它從github獲取主分支,構建它並將工件部署到tomcat。我決定編寫一個github web URL鉤子來調用這個sh。由於我的服務器正在運行Java,因此我正在使用groovy。我在/home/madhead/scripts
所著測試腳本test.sh
:從linux中的groovy執行bash腳本
環境變量SCRIPTS
在/home/madhead/.bashrc
設置爲/home/madhead/scripts
。在我的Groovlet我有
println "GROOVY"
println '$SCRIPTS/test.sh'.execute().text
println `whoami'.execute().text` //Prints madhead
println `env'.execute().text` //Prints all environment variables for madhead, SHELL is /bin/bash and SCRIPTS is /home/madhead/scripts in this output.
「常規」在HTML中printend,但沒有「SHELL」,並沒有測試文件,當我打電話的Groovlet創建。所以,腳本不會被調用。我試過
println '/home/madhead/scripts/test.sh'.execute().text
在groovlet中沒有效果。我如何從groovy/java調用bash腳本?另外,println 'echo test'.execute().text
會將測試打印到html,但println 'echo $SCRIPTS'.execute().text
不會打印任何內容。爲什麼?
你嘗試加入認領的腳本? – 2012-08-14 17:38:26
你很可靠,shell腳本中沒有shebang。但是當我添加它沒有改變。 – madhead 2012-08-14 21:30:04
UPD。另外,它發生了,我需要在進程上調用waitFor()。當我不做這個shell腳本不是不執行。 – madhead 2012-08-14 21:40:21