“ARGF is a stream designed for use in scripts that process files given as command-line arguments or passed in via STDIN.”
[size=medium][b]ARGF[/b][/size]
ARGF.each { |line|
puts line
}
上面就是根據參數,找到文件,打印出文件內容所需的全部代碼。
[img]http://dl2.iteye.com/upload/attachment/0091/4596/bb604d2e-5479-323a-b52c-62810607a219.png[/img]
該腳本甚至可以接受多個文件名參數,按順序一個一個的處理文件。
另外,該代碼還有一個附贈的語法糖,如果沒有給參數,則默認等待STDIN的輸入,效果如下:
[img]http://dl2.iteye.com/upload/attachment/0091/4598/b5e5ab09-69dd-3b73-8160-e0a80f834041.png[/img]
[size=medium][b]ARGV[/b][/size]
在運行ruby腳本的時候,所有的參數會以Array的形式保存到ARGV中。ARGF則會根據ARGV中的值一個一個的處理,每處理一個就從ARGV中移除一個,直到處理完所有的值。
puts ARGV.inspect
ARGF.each { |line|
puts line
puts ARGV.inspect
}
[img]http://dl2.iteye.com/upload/attachment/0091/4602/dd56eb91-8363-302e-a1d1-c9ebb78c048c.png[/img]
有了這層理解,就可以很容易的爲腳本加一些option,然後從ARGV中取出,根據option去做特殊的處理。