directory search
Ruby用户指南 3、开始 4、简单的例子 5、字符串 6、正则表达式 7、数组 8、回到那些简单的例子 9、流程控制 10、迭代器 11、面向对象思维 12、方法 13、类 14、继承 15、重载方法 16、访问控制 17、单态方法 18、模块 19、过程对象 20、变量 21、全局变量 22、实变量 23、局部变量 24、类常量 25、异常处理:rescue 26、异常处理:ensure 27、存取器 28、对象的初始化 29、杂项 RGSS入门教程 1、什么是RGSS 2、开始:最简单的脚本 3、数据类型:数字 4、数据类型:常量与变量 5、数据类型:字符串 6、控制语句:条件分歧语句 7、控制语句:循环 8、函数 9、对象与类 10、显示图片 11、数组 12、哈希表(关联数组) 13、类 14、数据库 15、游戏对象 16、精灵的管理 17、窗口的管理 18、活动指令 19、场景类 Programming Ruby的翻译 Programming Ruby: The Pragmatic Programmer's Guide 前言 Roadmap Ruby.new 类,对象和变量 容器Containers,块Blocks和迭代Iterators 标准类型 深入方法 表达式Expressions 异常,捕捉和抛出(已经开始,by jellen) 模块 基本输入输出 线程和进程 当遭遇挫折 Ruby和它的世界 Ruby和Web开发 Ruby Tk Ruby 和微软的 Windows 扩展Ruby Ruby语言 (by jellen) 类和对象 (by jellen) Ruby安全 反射Reflection 内建类和方法 标准库 OO设计 网络和Web库 Windows支持 内嵌文档 交互式Ruby Shell 支持 Ruby参考手册 Ruby首页 卷首语 Ruby的启动 环境变量 对象 执行 结束时的相关处理 线程 安全模型 正则表达式 字句构造 程序 变量和常数 字面值 操作符表达式 控制结构 方法调用 类/方法的定义 内部函数 内部变量 内部常数 内部类/模块/异常类 附加库 Ruby变更记录 ruby 1.6 特性 ruby 1.7 特性 Ruby术语集 Ruby的运行平台 pack模板字符串 sprintf格式 Marshal格式 Ruby FAQ Ruby的陷阱
characters

Ruby的启动

  • 命令行选项
  • 关于解释器行

请使用如下命令行启动Ruby解释器.

ruby [ option ...] [ -- ] [ programfile ] [ argument ...]

这里的"option"指下文将要提到的命令行选项中的一个。"--"则显式地表明选项字符串到此结束。"programfile"是装载Ruby脚本的文件。若省略不写或者写成"-"时,Ruby会把标准输入当做Ruby脚本进行处理。

programfile若以“#!”开始,则进行特殊的处理。详细情况请参考下文的关于解释器行。

argument中的字符串将变成内部常数ARGV的初始值。在有的环境中(Win32),标准shell不会展开通配符,这时Ruby解释器将自行展开通配符然后赋值给ARGV。此时,可使用的通配符有“*”、“?”、“[]”和“**/”(与Dir.glob不同,这里不能使用“{..}”)。在Win32环境中,若不想展开通配符的话,请使用单引号(')将参数括起来。

命令行选项

Ruby解释器可接受下列命令行选项。基本上与Perl的类似。

-0数字

以8进制数指定输入记录分隔符('$/')。

若不指定数字的话,分隔符是空字符(等同于$/="\0")。数字后面可以有其他的开关(switch)。

-00代表段落模式(等同于$/=""),-0777(因为这个代码不代表任何文字)表示将文件的全部内容一次性读入(相当于$/=nil)。

-a

与'-n'或'-p'一起使用时,可以打开自动拆分模式(auto split mode)。自动拆分模式将在各个循环前执行以下动作。

$F = $_.split

若没有同时指定'-n'或'-p'选项的话将不起作用。

-C directory

执行脚本之前,先移动到指定目录。

-c

只对脚本进行编译,而并不执行。编译后若没发现语法错误,则显示“Syntax OK”。

--copyright

显示版权信息。

-Kc

指定Ruby要处理的汉字编码。若是'E'或'e',则Ruby认定字符串或访问文件中的汉字编码为EUC。同样,若是'S'或's'的话则认定为SJIS。若是'U'或'u'则当作UTF-8处理。'N'表示不对汉字进行处理。该选项的默认值就是N(NONE)。

将来有可能会改变文字编码处理方式,届时该选项的内容也会有所变化。

-d
--debug

以调试模式执行脚本。将$DEBUG设置成true。

-e script

在命令行中指定脚本。添加-e选项后,就不会从参数中抽取脚本文件名了。

若多次使用-e选项时,系统会按照以下方式处理。

下列各表达式的意义相同。
ruby -e "5.times do |i|" -e "puts i" -e "end"

ruby -e "5.times do |i|
  puts i
end"

ruby -e "5.times do |i|; puts i; end"
-Fregexp

regexp指定给输入域分隔符(field separator)。

-h
--help

显示命令行选项的简介。

-i[extension]

对参数中指定的文件内容进行替换(in-place edit)。原始文件将被加上扩展名并保存下来。若没有扩展名的话,将不会进行备份,而且只有替换后的文件会被保留下来。

例:

% echo matz > /tmp/junk
% cat /tmp/junk
matz
% ruby -p -i.bak -e '$_.upcase!' /tmp/junk
% cat /tmp/junk
MATZ
% cat /tmp/junk.bak
matz
-I directory

指定(追加)加载文件的路径。指定的目录将被追加到Ruby的数组变量($:)中。

-l

进行行尾自动处理。首先,将$\改为$/的值,在print输出时添加换行。若使用了-n标志或-p标志的话,将对gets读入的各行末尾进行String#chop!处理。

-n

若使用了该标志,则整个程序会像sed -n或awk一样,被

while gets
 ...
end

括起来运行。

-p

与-n标志相仿,在各循环后输出变量$_的值。

例:

% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"'
MATZ
-r feature

执行脚本前,先对feature指定的库执行require操作。与'-n'选项、'-p'选项一起使用时特别奏效。

-s

对跟在脚本名后并且以'-'开头的参数进行解释,并将其值赋值给同名的全局变量。遇到以'--'开头的参数就停止解释,并将该参数从ARGV中删除。

例:

#! /usr/local/bin/ruby -s
# prints "true" if invoked with `-xyz' switch.
print "true\n" if $xyz
-S

该选项表明,当脚本名不是以'/'开头的时候,要使用环境变量PATH的值搜索脚本。若您的机器不支持#!的话,可以使用下列方法模拟#!的运行:

#!/bin/sh
exec ruby -S -x $0 "$@"
#! ruby

因为第1行的关系,系统把脚本交给/bin/sh。/bin/sh执行第2行后启动Ruby解释器。在-x选项的作用下,Ruby解释器把从'#!'到包含'ruby'的行的内容全部读入。

根据系统的不同,$0未必包含完整路径,因此有必要使用'-S'选项来告诉Ruby在必要时搜索脚本。

-T[level]

执行不纯度测试。若给level指定了一个值之后,安全等级也会使用这个值。省略level时,其值为1。对于CGI程序来说,将其指定为-T1比较合适。$SAFE的等级也将被设定。

-v
--verbose

冗长模式。启动时显示版本信息,然后将内部变量$VERBOSE设为true。当此变量为true时,众多的方法在运行时会显示冗长的信息。若只设定'-v'选项,而没有其他参数时,启动后会先显示版本信息,然后就结束运行(不会等待来自标准输入的脚本)。

--version

显示Ruby的版本信息。

-w

不显示版本信息的冗长模式。

-W[level]

ruby 1.8 特性

可以指定3种级别的冗长模式,如下所示。

  • -W0: 不显示警告
  • -W1: 只显示重要警告(默认)
  • -W2 or -W: 显示所有警告

内部变量$VERBOSE被分别设置为nil,false,true。

-x[directory]

从message中取出脚本并执行。读入脚本的范围是从'#!'开始,直到包含'ruby'的行为止。用EOF(文件结束),^D(controlD),^Z(controlZ)或保留字_END_来指定脚本结束。

若指定了目录名的话,则在执行脚本前移动到该指定目录。

-y
--yydebug

编译器调试模式。编译脚本时显示语法分析的过程。该显示过程会很漫长,可能只对那些想调试编译器的人有用。

关于解释器行

命令行指定的脚本是以'#!'开头的文件,当该行中不包含'ruby'时,将替代OS把'#!'后面的字符串看成命令行,然后启动解释器。

例如,用Ruby运行下面的shell脚本时将启动sh。

#!/bin/sh -vx
echo "$@"

若此行中包含'ruby'的话,则'ruby'左侧的部分将被忽略,右侧以'-'开头的部分被视为选项。

这里指定的选项将被追加到以命令行方式指定的选项之中。这主要是为了嵌入那些本该在脚本中指定的选项。例如,下面脚本的作用等价于使用命令行方式指定-Ke选项。

#! ruby -Ke

Previous article: Next article: