繁体   English   中英

从linux中的groovy执行bash脚本

[英]Execute bash script from groovy in linux

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

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

环境变量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.

“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不会打印任何内容。 为什么?

也许要获得你需要的环境变量:

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

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

groovy -e ' def env = System.getenv(); println env.JAVA_HOME '

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM