Отличный скрипт для чтения ключа:значение из входного файла

#groovy #hashmap #jenkins-pipeline

Вопрос:

Я запускаю следующий фрагмент заводного кода для чтения key:value из входного файла Input.txt

 def var1 = 123;
def aVer = sh(returnStdout: true, script: "cat Input.txt | grep A_${var1} | cut -f2 -d':'").trim()
def bVer = sh(returnStdout: true, script: "cat Input.txt | grep B_${var1} | cut -f2 -d':'").trim()
def lVer = sh(returnStdout: true, script: "cat Input.txt | grep L_${var1} | cut -f2 -d':'").trim()
println ("a is ${aVer}, b is ${bVer}, l is ${lVer} n");
 

INPUT_FILE



gt; cat Input.txt
A_123:0.1
B_123:0.2
L_123:0.3

ВЫВОД ВЫБОРКИ

 a is 0.1, b is 0.2, l is 0.3
 

Это всего лишь фрагмент. В среде разработки я выполняю приведенный выше код в цикле for для разных значений var1 .

Проблема здесь в том, что приведенный выше код отлично работает на rhel60 машине, но на centos машине я получаю следующую ошибку:

script returned exit code 127

Может ли кто-нибудь помочь мне понять причину вышеуказанной ошибки на centos машине?

Я также готов изменить это на чистый заводной код только вместо использования команд оболочки, как показано выше.

Комментарии:

1. ("input.txt" as File).readLines().collectEntries{ it.split(":", 2) } просто прочитал бы весь файл в одну карту, а затем вы могли бы выбрать оттуда свои значения.

2. @cfrick, Это похоже на ответ для меня, если файл хранится локально на главном, а не на сервере сборки.

3. @cfrick, @Matt, файл input.txt хранится на сервере сборки, а не на Jenkins master. Будет ли предложенный вами код не работать, если файл не находится на master?