如何将Ruby标准输出存储到多个变量?如何将标准输出存储到多个变量?
举例来说,如果我有:
puts "hello"
puts "thanks"
如何存放“你好”和“谢谢”像strVar
两个不同的变量(包含值“你好”)和strVar2
(包含值“谢谢”)。
在我的脚本中,我打电话给另一个Ruby脚本,它将多个字符串puts
标准输出。如何单独存储标准输出中的每个字符串?
如何将Ruby标准输出存储到多个变量?如何将标准输出存储到多个变量?
举例来说,如果我有:
puts "hello"
puts "thanks"
如何存放“你好”和“谢谢”像strVar
两个不同的变量(包含值“你好”)和strVar2
(包含值“谢谢”)。
在我的脚本中,我打电话给另一个Ruby脚本,它将多个字符串puts
标准输出。如何单独存储标准输出中的每个字符串?
我不确定我是否理解这个问题,但有无数的方法来存储/打印字符串。很难想象在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
谢谢。但是如果我没有保存这些值呢?例如,就我而言,我在脚本中调用另一个脚本,所以我无法控制。其他脚本有很多行,其中字符串放在了杰出的输出中。 – 000000000000000000000
也许你可以使用管道?例如,ruby script1.rb | ruby script2.rb并使用$ stdin.gets获取输出结果?我不认为有一种方法可以同时执行另一个ruby脚本并在脚本2中同时监视$ stdin。还有,如果script1有一个异常会发生什么?这样做的正确方法是使用数据库/ redis/filestore并将值存储在那里:) – whodini9
此外:http://stackoverflow.com/questions/14987362/how-can-i-capture-stdout-to- a-string – whodini9
你基本上链应用/脚本一起。有多种方法可以完成,但最简单的路径使用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读取。 |
将它们连接在一起。
完美的解释!先生,很高兴向您学习。 – 000000000000000000000
你想在变量中捕获你自己的脚本的标准输出? –
@ muistooshort排序的。在我的脚本中,我打电话给另一个ruby脚本,它会将多个字符串放到标准输出中。如何单独存储标准输出中的每个字符串?谢谢。 – 000000000000000000000
尽管我不会推荐它,但[StringIO](http://ruby-doc.org/stdlib-1.9.3/libdoc/stringio/rdoc/StringIO.html)是一条路。看看[这个答案](http://stackoverflow.com/a/14988271/1179430) – GAntoine