如何在Groovy中执行shell命令并获得返回代码$?

时间:2019-04-12 15:41:17

标签: shell groovy return-value

在Groovy中执行shell脚本无法得到返回代码(不是输出或错误)。

对于我尝试过的所有操作,它要么要求我退出,要么只打印$?而不是给我1或0。

groovy:75:美元符号后的非法字符串体字符;    解决方案:要么在第75行的第24列中转义文字美元符号“ \ $ 5”,要么将值表达式“ $ {5}”放在括号中。

下面是我尝试过的解决方案,所有方法均无效。

println "../src/check_job_log.s ${it}.log".execute().text
println "Check log ${it}.log completed"

//assert ("echo \$?".execute().text == "1")
//output = """echo $?""".execute().text
println(['echo', '$?'].execute().text)

// below is code for  @that other guy
//def process = "echo hello world".execute()
def process = "../src/check_job_log.s ${it}.log".execute()
print "Output: " + process.text
print "Exit code: " + process.exitValue()

Output: Exit code: 01

2 个答案:

答案 0 :(得分:0)

使用Process.exitValue()代替.text(或除此之外):

def process = "echo hello world".execute()
print "Output: " + process.text
print "Exit code: " + process.exitValue()

答案 1 :(得分:0)

为什么这些命令具有不同的输出?

$../src/check_job_log.s dml_ucd_test.sql.log
/iiss/prod/sql>
$echo $?
1
/iiss/prod/sql>
$../src/check_job_log.s dml_ucd_test.sql.log | echo $?
0
ops@uaiisst3:/iiss/prod/sql>
$