所以我正在研究Ruby中的Build Awesome命令行应用程序。在页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
代表什么?
答案 0 :(得分:4)
这是end-of-file character。您可以在Unix系统上使用 Ctrl + D 或在Windows上使用 Ctrl + Z 进行字面输入。显示 Ctrl 修饰符的传统方式是使用^
前缀,例如^D
。
请注意,这会完全关闭标准输入。如果要在输入这些行后读取更多数据,则需要检查输入本身是否有不同的分隔符 - 例如,空行。
答案 1 :(得分:3)
您可以在类Unix系统上按Ctrl-d或在Windows上按Ctrl-z来关闭STDIN。
^ 6代表什么?
您确定它是^6
而不是^d
吗?如果是这样,那可能是一个错字。