我有一个由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; }
控制台中的输出是:
“开始任务”
如果我将命令移到函数之外,我可以看到它们的输出。
非常感谢您的帮助!
答案 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)不支持您使用的某些功能。