将参数传递给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
一个,restart
或run
):
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
这应该给你绝对路径的每一个参数,这样就可以从任何地方打开它们。
我想你可能会误解我。在hello.rb中,我将它设置为接受ARGV [0]和ARGV [1]的参数,但守护进程无法正确传递参数。 – sunnyrjuneja 2012-02-28 04:17:55
'ARGV [0]'可能是当前文件的名称 – farnoy 2012-02-28 05:34:52
可能,他误解了你的问题。 – Jiemurat 2013-06-28 05:56:55