将参数传递给Ruby脚本

问题描述:

我运行一个像这样的文件:将参数传递给Ruby脚本

ruby hello.rb world.csv data.csv 

将如何开始的文件看?我有这个。

require 'daemons' 

pwd = File.dirname(File.expand_path(__FILE__)) 

wFile = "#{pwd}/world.csv" 
dFile = "#{pwd}/data.csv" 

Daemons.run("hello.rb #{wFile} #{dFile}") 

你必须像这样创建一个文件hello_daemon.rb

require 'daemons' 

Daemons.run("hello.rb") 

并运行它(你可以使用start一个,restartrun):

ruby hello_daemon.rb start -- world.csv data.csv 

而且daemons将运行hello.rb

ruby hello.rb world.csv data.csv 

使用全局常量ARGV(虽然没有多少东西需要学习)接收带参数的字符串数组。
因此,对于您的情况:

require 'daemons' 

files = [] 
ARGV.each do |arg| 
    files << File.expand_path(arg) 
end 

这应该给你绝对路径的每一个参数,这样就可以从任何地方打开它们。

+0

我想你可能会误解我。在hello.rb中,我将它设置为接受ARGV [0]和ARGV [1]的参数,但守护进程无法正确传递参数。 – sunnyrjuneja 2012-02-28 04:17:55

+1

'ARGV [0]'可能是当前文件的名称 – farnoy 2012-02-28 05:34:52

+0

可能,他误解了你的问题。 – Jiemurat 2013-06-28 05:56:55