我必须使用groovy进行简单的解析输出,然后我需要执行外部脚本。解析没问题,但在groovy中执行(以及艺术。关于那个问题)被证明有点令人困惑。整个调查让我想到了简单的问题;为什么这个:
def p1 = "ls -la".execute()
效果很好,当低于一个甚至不会开始? :
def p2 = "~/run_perl_test.pl".execute()
(这里的Perl没问题 - 以相同的方式从shell执行脚本工作正常。) 当然打印 p1.text 给出了正确的 ls -la 输出, p2.text 只返回空字符串。
我在这里做错了什么?我能不能以某种方式调试它(除了打印件)? (现在我只是从Jenkins运行它,只有那里我有翻译。没有IDE和东西)
答案 0 :(得分:0)
如果脚本以#!/usr/bin/perl
或类似方式开头,您只需要执行以下操作:
[ 'sh', '-c', '~/run_perl_test.pl' ].execute().text
以便~
得到扩展。或者您可以通过以下方式自行扩展:
"${System.properties.'user.home'}/run_perl_test.pl".execute().text
如果它只是一个perl脚本,那么我相信你需要
[ 'sh', '-c', 'perl -w ~/run_perl_test.pl' ].execute().text
或者再次,在代码中展开~
:
"perl -w ${System.properties.'user.home'}/run_perl_test.pl".execute().text