0

这有效:

system("ruby #{File.dirname(__FILE__) + '/Test')}")

但是这个

`ruby #{File.dirname(__FILE__) + '/Test'}`

不运行脚本测试

和这个:

system("ruby #{File.dirname(__FILE__) + '/Test #{arg}'")

不采用 arg 值。

我究竟做错了什么?

4

1 回答 1

3

第二个不起作用,因为有一个不平衡的尾随双引号 ( ") 和右括号 ( )),这可能会引发错误,但您没有看到它,因为反引号忽略了 STDERR:

`ruby #{File.dirname(__FILE__) + '/Test'")}`

第三个不起作用,因为您试图将变量插入到用单引号括起来的固定字符串中,该字符串也缺少终止符}

system("ruby #{File.dirname(__FILE__) + '/Test #{arg}'")

如果您没有在字符串插值中嵌入字符串计算,您会看到这一点:

cmd_file = File.dirname(__FILE__) + '/Test #{arg}'
system("ruby #{ cmd_file }")

修复引用并使用内在File.join的正确性:

cmd_file = File.join(File.dirname(__FILE__), "Test #{arg}")
system("ruby #{ cmd_file }")
于 2013-10-01T02:48:43.253 回答