gpt4 book ai didi

shell - Groovy 如何组合多个命令?

转载 作者:行者123 更新时间:2023-12-02 09:36:20 27 4
gpt4 key购买 nike

我想执行这个命令来获取 vertxHome。

在 shell 中,我可以这样做:

vertxHome=$(dirname $(dirname $(readlink -f $(which vertx))))
echo $vertxHome

但是如何在 groovy 中做到这一点?

我尝试了 vertxHome = 'dirname $(dirname $(readlink -f $(which vertx)))'.execute(),但它不起作用。

最佳答案

尝试通过 shell 执行命令而不是直接执行命令,尝试:

["/bin/sh", "-c", "your_command"].execute()

在你的情况下:

["/bin/sh", "-c", "dirname\$(dirname\$(readlink -f\$(which vertx)))"].execute()

请注意,作为他评论中的 OP 建议,$ 必须在命令中转义。

如果您想获取命令的输出,您可以通过此示例代码获取它,它来自 groovy documentation :

//A string can be executed in the standard java way:
def proc = ["/bin/sh", "-c", "dirname \$(dirname \$(readlink -f \$(which vertx)))"].execute()
// Call *execute* on the string
proc.waitFor() // Wait for the command to finish

// Obtain status and output
println "return code: ${ proc.exitValue()}"
println "stderr: ${proc.err.text}"
println "stdout: ${proc.in.text}" // *out* from the external program is *in* for groovy

如果您想访问环境变量而不关心命令执行,请使用:java.lang.System.getenv() ,例如在 groovy 中,这可能是:

def javaHome = java.lang.System.getenv("JAVA_HOME")
print javaHome

您可以执行相同的操作来获取 VERTX_HOME

希望对您有所帮助,

关于shell - Groovy 如何组合多个命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866451/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com