我使用 node.js 和 mocha 插件。 我需要从 Jenkins 运行测试。
测试目录是'/home/user/tests' 通过腻子,我可以启动命令“make all”来运行测试并获得结果。 我如何从 bash 脚本运行它?
我在文件“start.sh”中创建了脚本:
#!/bin/bash
DIR=$(cd /home/user/tests; make all)
echo "-----------------------START----$stDate--------------------"
echo $DIR
echo "------------------------END-----$enDate--------------------"
在这种情况下结果是
08:10:58 SSH: EXEC: STDOUT/STDERR from command [start.sh] ...
08:10:59 /bin/sh: mocha: command not found
08:10:59 /bin/sh: mocha: command not found
08:10:59 /bin/sh: mocha: command not found
08:10:59 /bin/sh: line 0: cd: ./messagel: No such file or directory
08:10:59 -----------------------START----Mon Sep 3 08:11:00 EDT 2012--------------------
08:10:59 cd ./tenant; mocha; cd ../; cd ./user; mocha --reporter list; cd ../; cd ./asset; mocha; cd ../; cd ./messagel mocha -t 5000; cd ../;
08:10:59 ------------------------END-----Mon Sep 3 08:11:00 EDT 2012--------------------
08:10:59 SSH: EXEC: completed after 401 ms
但这包含在文件“makefile”中并且没有运行 cd ./租户;摩卡;裁谈会../;光盘./用户; mocha——记者名单;裁谈会../;光盘./ Assets ;摩卡;裁谈会../; cd ./messagel mocha -t 5000;光盘../;
最佳答案
您的 DIR
变量只包含部分输出的事实可能是因为 cd/home/user/tests;将所有
输出到 stderr 而不是 stdout。
尝试:
DIR=$(cd /home/user/tests; make all >& /dev/stdout)
确保在 DIR
变量中捕获正常输出和错误输出。
另一种可能是
DIR=$(cd /home/user/tests; make all 2>&1 )
除了它直接操作文件描述符外,它几乎做同样的事情。更多信息 here .
另请注意,这只会重定向 make all
的输出。换句话说,如果 /home/user/tests
不存在,错误消息将不会被 $( )
关于linux - 如何在 Linux 上运行命令并将输出保存在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12247818/