2011-11-30 227 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}]