簡體   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