如何將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