繁体   English   中英

命令行选项

[英]Command line options

我对Ruby命令行选项感到困惑。 -C dir-X dir删除目录,但它们如何相互不同?

  • -x [dir]-X dir什么不同?
  • -I dir做什么(我知道它添加了dir作为加载库的目录)?

让我们在主目录中创建一个test.rb文件,其中包括:

hello
#!/usr/bin/ruby
p "here"

现在,如果我们尝试运行它:

ruby -C /home/my_home test.rb

这意味着将工作目录更改为/ home / my_home并运行test.rb会出现错误:

test.rb:1:in `<main>': undefined local variable or method `hello' for main:Object (NameError)

如果我们运行它:

ruby -x /home/my_home test.rb

我们将“打印”到这里并且没有错误。 -x和-C之间的主要区别在于-x删除#!/usr/bin/ruby行之前的所有内容。 当使用-x时,您也不必将目录设置为cd。 因为-x的主要目的是删除行,如果需要,它也只包括-C功能。

cd /home/my_home; ruby -x test.rb

见(ruby --help)

  • -Cdirectory cd到目录,在执行脚本之前
  • -x [directory] 在#!ruby line之前删除文本,也许cd到目录

至于-I。 您可以提供ruby将搜索您执行或要求的文件的目录。

ruby -x test.rb

除非您在/ home / my_home中,否则Ruby将找不到test.rb文件。 但是如果你添加-I ruby​​也会在“/ home / my_home”中查找test.rb。

ruby -x -I/home/my_home test.rb

与-C的不同之处在于它在执行之前不会更改目录,而只会在那里搜索文件。

-C和-X选项执行相同的工作(执行前更改目录)。 没有区别。

-I选项用于添加$ LOAD_PATH的路径

例如:假设你在my_lib目录my_print_class.rb中有一个名为my_print_class.rb的ruby文件:(〜/ my_lib / my_print_class.rb)

class MyPrintClass
   def self.my_print(str)
     puts str
   end
end

现在你家里有my_call.rb(〜)。

〜/ my_call.rb:

 require 'my_print_class'
 MyPrintClass.my_print("Hello world")

为此你需要my_print_class的路径,所以你使用ruby -I my_lib my_call.rb

http://www.tutorialspoint.com/ruby/ruby_command_line_options.htm

正如你可以从man ruby或一些在线文档中看到的那样, -C-X是相同的。

并且-I将为ruby LOAD_PATH添加一些目录。 例如,我有./a/my.rb和`./test.rb'这样:

# ./a/my.rb
def hello
  puts 'hello from a/my'
end

# ./test.rb
require 'my'
hello       

我执行ruby -I ./a test.rb 这将从hello from a/my打印hello from a/my 如果没有-I ,ruby将报告错误: cannot load such file -- my ,因为./a不在当前的LOAD_PATH中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM