Bash скрипт для вывода результата функции - PullRequest
3 голосов
/ 08 июля 2011

У меня есть скрипт оболочки bash, выполненный Jenkins / Hudson. По какой-то причине, когда я создаю функцию, вывод этой функции не регистрируется обратно на консоль. Это пример моего кода:

РЕДАКТИРОВАТЬ !!! - этот виновник здесь SSH ... Есть ли способ заставить его вывод обратно на консоль?

perform_task()
{
   ssh jenkins@192.168.100.5 pwd
}

echo "Starting a task";
perform_task || { echo "The Task Failed"; exit 1; } 

Вывод в консоли:

«Запуск задания»

если я переместу команды за пределы функции, я увижу их вывод.

Помощь по этому вопросу будет принята с благодарностью!

Ответы [ 4 ]

4 голосов
/ 08 июля 2011

Я частично решил проблему, заставив скрипт повторить команду:

#! / Bin / bash -ex

Это все еще скрывает вывод этогокоманда, но по крайней мере у меня есть понимание о том, что выполняется

3 голосов
/ 08 июля 2011

Я просто скопировал вашу функцию, добавил #!/bin/bash -e в начало и вставил ее в «Execute Shell» Дженкинса.

Работало нормально!

Действительно ли ваш исполняемый файл bash расположен в /bin? На какой ОС вы запускаете скрипт?

Building remotely on slave_1
[test] $ /bin/bash -xe /tmp/hudson1206345540964396738.sh
+ echo 'Starting a task'
Starting a task
+ perform_task
+ ssh slave_2 pwd
/home/jenkins
Finished: SUCCESS
0 голосов
/ 08 июля 2011

добавить #!/bin/bash в качестве первой строки файла Причина в том, что базовая оболочка bourne (/ bin / sh) не поддерживает некоторые из используемых вами функций.

0 голосов
/ 08 июля 2011

Не уверен насчет Дженкинса или всего этого, но у меня это сработало:

perform_task()
{
    ls -al
    ps aux
    pwd
}

echo "Starting a task"
perform_task || ( echo "The Task Failed" ; exit 1 )
...