Nano Hash - криптовалюты, майнинг, программирование

Как выполнить команду оболочки в Groovy и получить код возврата $?

Я не могу получить код возврата (не результат или ошибку) при выполнении сценария оболочки в 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

Ответы:


1

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

def process = "echo hello world".execute()
print "Output: " + process.text
print "Exit code: " + process.exitValue()
12.04.2019
  • $ ksh ../src/check_job_log.s sb_sp_get_ucd_test.sql.log $ echo $? 0 12.04.2019
  • Ваш вывод кода: Вывод: Код выхода: 01. Но, как вы можете видеть сверху, вывод из командной строки: 0. Почему это 01 и 0 разные? 12.04.2019
  • Результат моего кода должен быть Output: hello world, Exit code: 0. Вы получаете что-нибудь еще? 12.04.2019
  • Я заменяю ваш hello world своим кодом, нет правильного вывода, но код выхода (01) отличается от того, что я запускаю тот же сценарий из командной строки, который равен 0. Я также тестировал ваш код, код выхода 01 , а не 0. 12.04.2019
  • Благослови заводной 18.06.2021

  • 2

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

    $../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>
    $
    
    12.04.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..