如何正确执行外部脚本(以简单的方式)?

时间:2014-02-21 10:01:29

标签: shell groovy

我必须使用groovy进行简单的解析输出,然后我需要执行外部脚本。解析没问题,但在groovy中执行(以及艺术。关于那个问题)被证明有点令人困惑。整个调查让我想到了简单的问题;为什么这个:

def p1 = "ls -la".execute()

效果很好,当低于一个甚至不会开始? :

def p2 = "~/run_perl_test.pl".execute()

(这里的Perl没问题 - 以相同的方式从shell执行脚本工作正常。) 当然打印 p1.text 给出了正确的 ls -la 输出, p2.text 只返回空字符串。

我在这里做错了什么?我能不能以某种方式调试它(除了打印件)? (现在我只是从Jenkins运行它,只有那里我有翻译。没有IDE和东西)

1 个答案:

答案 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