我正在尝试在Rails的index操作中执行.sh文件。
我尝试使用exec"sh app/controllers/file.sh"
,它会在终端中执行,然后停止服务器!我不知道为什么。
而我尝试用output = system"sh app/controllers/file.sh"
,它在浏览器中返回true,而不是.sh文件中的内容。
提前感谢:)
我正在尝试在Rails的index操作中执行.sh文件。
我尝试使用exec"sh app/controllers/file.sh"
,它会在终端中执行,然后停止服务器!我不知道为什么。
而我尝试用output = system"sh app/controllers/file.sh"
,它在浏览器中返回true,而不是.sh文件中的内容。
提前感谢:)
Open3
类,尤其是 capture2
或 capture3
方法。require 'open3'
stdout, stderr, status = Open3.capture3("sh app/controllers/myscript.sh")
如上所述,capture3
可以获取脚本运行的 stdout
、stderr
和 status
。而 capture2
只返回 stdout
和 status
。在 Open3
中还有其他有用的函数值得研究。
要了解为什么 exec
和 system
的行为方式是这样的,可以阅读这个 SO 回答:Ruby 中 exec、system、%x() 或反引号之间的区别