为什么我的.rb脚本没有进行bash?

时间:2016-05-18 21:48:00

标签: ruby bash

我有一个简单的类代码。它是:

def greeting
 greeting = ARGV.shift
  ARGV.each do |arg|
     p "#{greeting}, #{arg}!"
     end
  end

我的愿望是简单输出“你好,查理!”和“你好,山姆!”基于存储在数组中的名称。但是,当我尝试在ruby中运行程序时,看起来我使用了return语句。

 address_bloc :> ls
 address_bloc.rb greeting.rb     ruby
 argv_test.rb    models          spec

 address_bloc :> greeting.rb Yo Tommy Bob Sally
 -bash: greeting.rb: command not found

 address_bloc :> ruby greeting.rb Yo Sam Sean Bill

 address_bloc :> ruby greeting.rb Yo Sam Sean Bill

1 个答案:

答案 0 :(得分:4)

删除函数定义逻辑,如果这是您希望脚本执行的操作,只需将内容包含在顶层:

greeting = ARGV.shift
ARGV.each do |arg|
  puts "#{greeting}, #{arg}!"
end

如果您想继续定义用于问候名单列表的通用功能,您也可以通过调用greeting并将ARGV的内容传递给它来执行此操作,如下所示:

def greeting(args)
  greeting = args.shift
  args.each do |arg|
    puts "#{greeting}, #{arg}!"
  end
end
greeting ARGV

但总的来说,如果它的参数更有意义,它是一个更好的函数,所以考虑做这样的事情:

def greet_list(greeting, name_list)
  name_list.each do |arg|
    puts "#{greeting}, #{arg}!"
  end
end
greet_list ARGV.shift, ARGV