簡體   English   中英

Groovy如何組合多個命令?

[英]Groovy how to combine multiple commands?

我想執行此命令以獲取vertxHome。

在shell中,我可以這樣:

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

但是如何做到這一點呢?

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

嘗試通過外殼執行命令,而不是直接執行命令,請嘗試:

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

在您的情況下:

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

請注意,作為他的注釋中的OP建議,必須在命令中轉義$

如果要獲取命令的輸出,則可以通過groovy文檔中的以下示例代碼獲取該命令的輸出:

//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

希望這可以幫助,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM