1

我的服务器上有一个 bash 脚本,它从 github 获取 master 分支,构建它并将工件部署到 tomcat。我决定写一个 github web URL hook 来调用这个 sh。当我的服务器运行 Java 时,我正在使用 groovy。test.sh我写了一个测试脚本/home/madhead/scripts

echo "SHELL"
touch /home/madhead/test_`date +%d_%m_%Y_%H_%M_%S` # To see if script is actually called

环境变量SCRIPTS设置为/home/madhead/scriptsin /home/madhead/.bashrc。在我的 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.

“GROOVY”是 html 中的打印端,但是当我调用 groovlet 时没有“SHELL”并且没有创建测试文件。所以,脚本没有被调用。我试过

println '/home/madhead/scripts/test.sh'.execute().text

在 groovlet 中没有任何效果。我如何从 groovy/java 调用 bash 脚本?此外,println 'echo test'.execute().text将 test 打印到 html,但println 'echo $SCRIPTS'.execute().text不打印任何内容。为什么?

4

1 回答 1

2

也许要获取您需要的环境变量:

def env = System.getenv()
println env.SCRIPTS

在我的盒子里,这个人工作:

groovy -e ' def env = System.getenv(); println env.JAVA_HOME '
于 2012-08-14T19:02:20.873 回答