2011-11-30 229 views
3

我有以下幾點:執行shell腳本

_shellScript = "../Dependency/test.sh" 
exec 'sh #{_shellScript}' 

但是,當我去執行它結束了我在外殼的Ruby腳本提示而不是執行位於變量_shellScript內的腳本。

任何想法,將不勝感激!

+4

您的代碼在'exec'字符串使用單引號。在單引號字符串中,Ruby不提供插值('#{}')。那也可能是錯誤。 – Linuxios

回答

7

在Ruby中,exec結束Ruby進程並將shell傳遞給指定的子進程。如果您需要將test.sh的輸出全部提供給控制檯,則需要system("sh #{_shellScript}")。如果您需要提供數據並通過stdin和stdout接收數據,請查看popen

+0

我認爲你的評論可能更接近實際問題,''sh#{_ shellScript}'中的'#'將被視爲評論,所以它與'exec'sh''相同,並且有命令提示。 –

+0

你可能會同時修復當前的錯誤(單一而不是雙引號)和下一個('exec'而不是'system')。 –

+0

系統肯定有效。乾杯 – Danny

1

剛剛嘗試下面一行:

%x[#{_shellScript}]