下面的Ruby代码旨在执行以下操作:
当我将old设置为ARGV[0](也是hello.c)时,fp被赋值为hello.c的第一行,并且代码跳出了循环。
如何运行它:
代码如下:
我不明白为什么从命令行读取文件与硬编码文件名有何不同之处。
非常感谢您的帮助。谢谢。
- 将命令行上命名为ARGV[0]的文件写入old
- 创建该文件的新临时副本
- 循环直到用户输入
- 删除临时文件
当我将old设置为ARGV[0](也是hello.c)时,fp被赋值为hello.c的第一行,并且代码跳出了循环。
如何运行它:
user@cpu live$ ruby test.rb hello.c
hello.c
#include <stdio.h>
user@cpu live$
代码如下:
#!/usr/bin/env ruby
require 'timeout'
old = ARGV[0].chomp
puts old # sanity check
# old = 'hello.c'
new = 'tmp_' + old
`cp #{old} #{new}`
fp = nil
loop do
begin
Timeout::timeout(3) { fp = gets }
puts fp # sanity check
break if (fp)
rescue Timeout::Error
# ...
end
end
`rm #{new}`
我不明白为什么从命令行读取文件与硬编码文件名有何不同之处。
非常感谢您的帮助。谢谢。