如何将标准输出存储到多个变量?

时间:2016-11-30 18:36:51

标签: ruby-on-rails ruby variables stdout

如何将Ruby标准输出存储到多个变量?

例如,如果我有:

puts "hello"

puts "thanks"

我如何存储"你好"并且"谢谢"两个不同的变量,如strVar(包含值" hello")和strVar2(包含值"感谢")。

在我的脚本中,我正在调用另一个Ruby脚本,它将puts多个字符串转换为标准输出。如何单独存储标准输出中的每个字符串?

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解这个问题,但是有无数种方法可以存储/打印字符串。很难想象一种情况,即puts之后的值不会手动输入或以编程方式设置。

您可以使用gets或$ stdin.gets保存输入变量,也可以将其作为ARGV数组的参数保存。例如:

puts "Enter the first string"
var0 = $stdin.gets.chomp

如果您已保存值

var1 = "hello"
var2 = "thanks"
array = [var1, var2]
hash = {:key1 => var1, :key2 => var2}


puts var1
puts var2
array.each do |str| puts str end
hash.map do |k, v| puts v end

答案 1 :(得分:0)

您基本上将应用程序/脚本链接在一起。有多种方法可以做到,但最简单的路径使用STDIN / STDOUT管道。

一个简单的例子就是使用两个小脚本。将其保存为test.rb:

puts 'foo'
puts 'bar'

这是test2.rb:

v1 = gets.chomp
v2 = gets.chomp

puts "v1=#{v1} v2=#{v2}"

然后,在命令行使用:

ruby test.rb | ruby test2.rb

将输出:

v1=foo v2=bar

|是我们如何将一个脚本的输出链接到另一个脚本的输入而不是Ruby的一部分,它是操作系统的一部分。

这是有效的,因为默认情况下,puts写入STDOUT,gets从STDIN读取。 |将它们连接在一起。