【发布时间】:2011-12-20 14:48:50
【问题描述】:
我正在尝试获取对传递给 ruby 解释器的脚本的引用。例如,如果我正在运行 ruby foo.rb,我想获得对 foo.rb 文件的引用。
我认为在 Python 中这可以通过sys.argv[0] 访问。可以调用__FILE__,但这不是我正在寻找的解决方案,因为__FILE__ 会生成当前执行代码所在的文件。
有什么办法吗?
【问题讨论】:
标签: ruby
我正在尝试获取对传递给 ruby 解释器的脚本的引用。例如,如果我正在运行 ruby foo.rb,我想获得对 foo.rb 文件的引用。
我认为在 Python 中这可以通过sys.argv[0] 访问。可以调用__FILE__,但这不是我正在寻找的解决方案,因为__FILE__ 会生成当前执行代码所在的文件。
有什么办法吗?
【问题讨论】:
标签: ruby
使用 File 类中的方法来操作 FILE
在 test.rb 里面,我有
puts __FILE__
puts File.dirname(__FILE__)
puts File.basename(__FILE__)
当你跑步时,
ruby a/b/test.rb
你得到
a/b/test.rb
a/b
test.rb
【讨论】:
irb运行文件时,我不想$0告诉我程序名称是irb,但我想知道正在执行哪个脚本文件。
让我为读者添加一个$0的官方链接。
它是 Ruby 自身提供的全局变量之一。
http://ruby-doc.org/core-2.0.0/doc/globals_rdoc.html
包含正在执行的脚本的名称。可能是可分配的。
【讨论】:
我发现$0 是用于启动程序的文件名。很简单。
【讨论】: