我正在尝试获取传递给ruby解释器的脚本的引用。例如,如果我正在运行ruby foo.rb
,我想获得对foo.rb
文件的引用。
我认为在Python中可以通过sys.argv[0]
访问它。可以调用__FILE__
,但这不是我正在寻找的解决方案,因为__FILE__
生成当前执行代码所在的文件。
有没有办法做到这一点?
答案 0 :(得分:43)
我发现$0
是用于启动程序的文件的名称。很容易。
答案 1 :(得分:40)
使用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
答案 2 :(得分:4)
让我为读者添加$0
的官方链接。
它是Ruby本身提供的全局变量之一。
http://ruby-doc.org/core-2.0.0/doc/globals_rdoc.html
包含正在执行的脚本的名称。可以分配。