shell脚本输出到groovy中的数组

Joã*_*aro 1 groovy

我需要将此 shell 脚本“git diff --name-only commit2 commit1”的结果输出到 groovy 中的数组。我该怎么做?

已经尝试创建变量

def diff = sh(script: "git diff --name-only commit2 commit1", returnStdout: true)
Run Code Online (Sandbox Code Playgroud)

然后使用 Pattern 和 Matcher 进行处理,但可能由于其格式,它总是返回一个空数组。

shell 脚本的输出类似于:

directory/file1.java
directory/file2.java
Run Code Online (Sandbox Code Playgroud)

找到了一种用 bash 做到这一点的方法,但不知道如何使其适应 groovy (mapfile -t my_array < <( my_command ))

Szy*_*iak 5

如果您想以列表形式获取输出,其中每一行都是该列表中的一个单独条目,您可以调用split('\n')sh步骤的输出:

def diff = sh(script: "git diff --name-only commit2 commit1", returnStdout: true).trim().split('\n')
Run Code Online (Sandbox Code Playgroud)