Ruby命令行选项,列出要执行的操作

时间:2011-11-16 01:48:16

标签: ruby

我可以做这样的事情:

>ruby some_file.rb
>Your options are:
> 1. delete file blah.txt
> 2. delete file blah2.txt
> 3. delete file blah3.txt
> x to exit
> 1
> blah.txt was deleted
> 1. delete file blah.txt
> 2. delete file blah2.txt
> 3. delete file blah3.txt
> x to exit
> x
>

这将从一个文件中读取它的配置,该文件将删除所有文件。

我希望这个循环,所以除非你按'x',否则它会不断询问该做什么。

你怎么能用Ruby做到这一点?

4 个答案:

答案 0 :(得分:1)

您可以使用Kernel#gets从标准输入读取用户输入。这应该有希望指出你正确的方向。

答案 1 :(得分:0)

  1. 您需要创建您所说的包含所有文件的配置文件 需要删除。

  2. 阅读配置文件

  3. 根据配置文件

  4. 创建菜单
  5. 读入用户输入并执行操作。

答案 2 :(得分:0)

你可以从这里开始:

def menu(choice)
  case choice
    when 1 
      # do_something
    when 2
      # ...
  end
end

while ((a = gets) != "x\n")
  menu(a)
end

正如@Hunter McMillen所说,你可以使用一些配置文件以编程方式创建案例。

答案 3 :(得分:0)

if ARGV.size > 0
  if FileTest.exists? ARGV[0]
    files=[]
    IO.readlines(ARGV[0]).each{|l| files.push(l.chop) if FileTest.exists? l.chop}
    while files.size > 0
      files.each_with_index{|f,i| puts "#{i+1}. #{f}"}
      puts "x to exit"
      opt = $stdin.gets.chop
      break if opt == 'x'
      opt = opt.to_i
      puts "#{files.delete_at(opt-1)} was deleted" if opt > 0 && opt <= files.size && File.delete(files[opt-1]) > 0
    end
  end
end