1

所以我正在研究用 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

4

2 回答 2

4

这是一个文件结束符。您可以在 Unix 系统上使用Ctrl+D或在 Windows 上使用Ctrl+逐字键入Z。显示Ctrl修饰符的传统方式是使用^前缀,例如^D.

请注意,这会完全关闭标准输入。如果您想在输入这些行后读取更多数据,则需要检查输入本身是否有不同的分隔符,例如空行。

于 2013-02-14T22:25:30.943 回答
3

您可以通过在类 Unix 系统上按 Ctrl-d 或在 Windows 上按 Ctrl-z 来关闭 STDIN。

^6 代表什么?

你确定它说^6而不是^d?如果是这样,那可能是一个错字。

于 2013-02-14T22:25:22.597 回答