我不明白为什么当我执行我的代码时,我选择了他没有做任何事情的第一个选项。 你会在下面找到我的水晶脚本的代码。
require "colorize"
class Application
def initialize
mainMenu
end
def mainMenu
puts "you are going to install the software?"
puts " 1: To install the soft you have to be root".colorize.fore(:red).bold
puts " 2: Modify module"
case gets
when "1"
puts "installation of the software.."
install_soft
when "2"
puts "you chose option2"
end
end
Application.new
end
这是我的安装模块的代码,其中包含methode install_soft。
他正确地打印了puts " you are .."
,但它没有做任何其他事情:(
module InstallSoft
def install_soft
puts "you are in def install_soft "
output = IO::Memory.new
Process.run("bash", args: {"eole/lib/bash_scripts/installation.sh"}, output: output)
output.close
output.to_s
end
end
答案 0 :(得分:0)
那么,该怎么办?您在内存IO中收集进程的标准输出并将其转换为字符串。
如果要将进程的stdout打印到应用程序的stdout,则必须转发它(使用STDOUT
而不是内存IO)或将内存IO的内容打印到stdout (puts install_soft
)。
答案 1 :(得分:0)
我找到了使用
的解决方案 Process.run("lib/bash_scripts/installation.sh", shell: true, output: output)
output.close
output.to_s
但目前我无法得到我的剧本的输出:(
答案 2 :(得分:0)
我找到了一个解决方案,可以看到带有输出的堆栈:true
Process.run("lib/bash_scripts/installation.sh", shell: true, output: true, error: true)