我试图弄清楚如何使用命令行开关 -r。
我的理解是代码打出来如下:
ruby -r*nameOfRequired*
我发现事实并非如此。当我输入上面的内容并按 Enter 时,终端期望“输入语法结束”并且不会继续。
我错过了什么?开关和所需文件名之间需要有空格吗?
请并谢谢您!
编辑: 我目前正在阅读 David A. Black 的《The Well Grounded Rubyist》,我在阅读有关命令行开关的部分时提出了这个问题。
话虽如此,我创建了一个“test.rb”文件,其中包含:
puts Date.today
然后,在终端中,我输入:
ruby -r date
我认为这将“需要”日期模块,然后使我能够使用 ruby test.rb 运行“test.rb”文件(假设我位于正确的目录中)。
相反,终端光标移动到换行符,等待更多输入。如果我需要澄清其他任何事情,请告诉我。谢谢!
一般来说,
ruby
命令不会记录从一次运行到下一次运行的任何状态,因此您需要告诉它每次运行它时需要知道的所有信息。
无论何时运行它,您都需要告诉它要运行的主程序,否则它会期望您在标准输入上键入该程序。
-r
不指定主程序。
试试这个:
ruby -rdate test.rb
更新此答案 10 周年: 当然,更正常的稳健做法是在
require 'date'
文件顶部附近写入 test.rb
,因此无论代码如何执行,它总是会被包含在内。
如果您只输入
ruby -r
module,那么Ruby将加载该模块并等待您输入需要该模块的主程序。
如果您只想运行模块而不执行其他操作,则可以执行
ruby
full-path-to-module 而不带 -r
、或 ruby -r
module -e exit
或 ruby -r
模块 </dev/null
,或类似的。
根据
ruby -h
:
-rlibrary 在执行脚本之前需要该库
在不提供脚本文件路径的情况下,它从标准输入读取脚本。
尝试以下操作(当您给出
-e command
时可以省略脚本文件路径):
ruby -r**nameOfRequired** -e ""