我使用node.js和mocha插件。 我需要从Jenkins运行测试。
测试目录是'/ home / user / tests' 通过putty,我可以启动命令'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 ./tenant;摩卡; cd ../; cd ./user;摩卡 - 报告人名单; cd ../; cd ./asset;摩卡; cd ../; cd ./messagel mocha -t 5000; cd ../ ;
答案 0 :(得分:3)
您的DIR
变量仅包含部分输出的事实可能是因为cd /home/user/tests; make all
输出到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
不存在,$( )
答案 1 :(得分:0)
似乎bash脚本使用的用户ID与手动运行时不同; PATH
变量的不同值表示从Makefile运行时找不到mocha
和messagel
命令。