Bash脚本输出功能结果

时间:2011-07-08 17:11:11

标签: bash scripting hudson jenkins

我有一个由Jenkins / Hudson执行的bash shell脚本。出于某种原因,当我创建一个函数时,该函数的输出不会记录回控制台。这是我的代码示例:

编辑!!! - 这里的罪魁祸首是SSH ......有没有办法强制将其输出恢复到控制台?

perform_task()
{
   ssh jenkins@192.168.100.5 pwd
}

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

控制台中的输出是:

“开始任务”

如果我将命令移到函数之外,我可以看到它们的输出。

非常感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

我通过让脚本回显命令来部分地解决了这个问题:

#!/ bin / bash -ex

这仍然隐藏了该命令的输出,但至少我对正在运行的内容有所了解

答案 1 :(得分:3)

我刚刚复制了你的函数,将#!/bin/bash -e添加到了开头并将其粘贴到Jenkins的“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

答案 2 :(得分:0)

不确定詹金斯或所有这些,但这对我有用:

perform_task()
{
    ls -al
    ps aux
    pwd
}

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

答案 3 :(得分:0)

添加#!/bin/bash作为文件的第一行 原因是基本的 bourne shell (/ bin / sh)不支持您使用的某些功能。