Как выполнить команду оболочки в Groovy и получить код возврата $? - PullRequest
0 голосов
/ 12 апреля 2019

Я не могу получить код возврата (не вывод или ошибку) при выполнении сценария оболочки в Groovy.

За все, что я пытался, он либо попросил меня сбежать, либо просто напечатал $? вместо того, чтобы дать мне 1 или 0.

groovy: 75: недопустимый символ тела строки после знака доллара; решение: либо экранируйте буквальный знак доллара "\ $ 5", либо заключите в скобки выражение значения "$ {5}" @ строка 75, столбец 24.

Ниже приведены решения, которые я пробовал, все не работают.

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 голосов
/ 12 апреля 2019

Почему эта команда имеет разный вывод?

$../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>
$
0 голосов
/ 12 апреля 2019

Используйте Process.exitValue() вместо (или в дополнение к) .text:

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