所以我正在研究用 Ruby 构建很棒的命令行应用程序。在第 81 页,我们应该使用 STDIN 将多个任务输入到项目中。
File.open(global_options[:filename], 'a+') do |todo_file|
if task_names.empty?
puts "Reading new tasks from stdin..."
task_names = STDIN.readlines.map {|a| a.chomp}
end
tasks = 0
task_names.each do |task|
todo_file.puts [task, Time.now].join(', ')
tasks+=1
end
if tasks == 0
raise "You must provide tasks on the command-line or standard input"
end
end
将任务输入项目的常用方法是这样的,$todo new "Rake leaves
但是使用上面的代码,我们可以了解下面示例中的内容。
它确实有效。但是我如何告诉 STDIN 停止收听?如何使用它的示例是这样的......
$ todo new
Rake leaves
Take out trash
Clean garage
Put away dishes
^D
代表什么^D
?