这有效:
system("ruby #{File.dirname(__FILE__) + '/Test')}")
但是这个
`ruby #{File.dirname(__FILE__) + '/Test'}`
不运行脚本Test
而且:
system("ruby #{File.dirname(__FILE__) + '/Test #{arg}'")
不接受arg值。
我做错了什么?
答案 0 :(得分: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 }")