2012-09-03 126 views
1

我使用node.js和mocha插件。 我需要从詹金斯运行测试。如何在linux上运行命令并将变量保存在变量中

测试目录是'/ 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。 /承租人;摩卡; cd ../; cd ./user;摩卡 - 记者名单; cd ../; cd ./asset;摩卡; cd ../; cd ./messagel mocha -t 5000; cd ../;

回答

0

看来,bash脚本被下当手动运行它比不同的用户ID来运行;变量PATH的值不同意味着从Makefile运行时未找到mochamessagel命令。

3

事实上,你的DIR变量只包含部分输出,可能是因为cd /home/user/tests; make all输出到标准错误而不是标准输出。

尝试:

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不存在,则错误消息将不会被捕获$()

相关问题