2012-09-03 67 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不存在,則錯誤消息將不會被捕獲$()

相關問題