`
freebird0221
  • 浏览: 5586 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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


环境变量

Ruby解释器使用下列环境变量。

RUBYOPT

    指定默认情况下传给Ruby解释器的选项。

        *

          sh系

          RUBYOPT='-Ke -rkconv'
          export RUBYOPT

        *

          csh系

          setenv RUBYOPT '-Ke -rkconv'

        *

          MS-DOS系

          set RUBYOPT=-Ke -rkconv

RUBYPATH

    指定-S选项后,Ruby会搜索环境变量PATH指定的Ruby脚本。此时,该环境变量指定的目录也被纳入搜索范围(其优先程度高于PATH)。

        *

          sh系

          RUBYPATH=$HOME/ruby:/opt/ruby
          export RUBYPATH

        *

          csh系

          setenv RUBYPATH $HOME/ruby:/opt/ruby

        *

          MS-DOS系

          set RUBYPATH=%HOME%\ruby:\opt\ruby

RUBYLIB

    该环境变量把自己的值添加在Ruby库的搜索路径$:的默认值之前。

        *

          sh系

          RUBYLIB=$HOME/ruby/lib:/opt/ruby/lib
          export RUBYLIB

        *

          csh系

          setenv RUBYLIB $HOME/ruby/lib:/opt/ruby/lib

        *

          MS-DOS系

          set RUBYLIB=%HOME%\ruby\lib:\opt\ruby\lib

RUBYLIB_PREFIX

    该环境变量只在DJGPP版、Gygwin版、mswin32版和mingw32版的Ruby中有效。

    该环境变量的值是path1;path2或path1 path2。若Ruby库的搜索路径$:的前面部分与path1一致时,则将其替换为path2。

        *

          MS-DOS系

          set RUBYLIB_PREFIX=/usr/local/lib/ruby;d:/ruby

RUBYSHELL

    该环境变量只在OS2版、mswin32版和mingw32版的Ruby中有效。

    指定用system执行命令时所使用的shell。若省略此环境变量,则使用COMSPEC的值。
PATH

    用system等执行命令时的搜索路径。若没有设定时(其值为nil),将按照“/usr/local/bin:/usr/ucb:/usr/bin:/bin:.”进行搜索。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Ruby资源ruby-v3.1.1.zip

    1. **块参数解构**:Ruby 3.1引入了一种新的语法,允许在块参数中使用解构赋值,使得处理数组或哈希更加方便。例如,`yield [a, b], {c: d}`可以直接将数组和哈希解构为单独的变量。 2. **Symbol to_proc的优化**:...

    ruby安装包下载 | ruby环境搭建

    编辑`redis.conf`配置文件,根据实际情况调整参数,然后启动Redis服务: ``` src/redis-server /path/to/redis.conf ``` 5. 配置Ruby与Redis: 要在Ruby中使用Redis,你需要安装`redis`客户端库。通过RubyGems...

    ruby(前途大好的ruby+rains)

    Proc是代码块的可存储形式,可以作为参数传递或赋值给变量。 5. **闭包**:Ruby中的 Proc 和 lambda 实现了闭包,能够捕获其定义时的上下文环境,这在函数式编程中非常有用。 6. **模块(Module)**:Ruby的模块...

    ruby语言帮助文当

    这个版本带来了许多性能改进和新特性,例如引入了“关键字参数”来增强函数调用的清晰度,以及“二进制字符串”类型,使得处理二进制数据更加便捷。此外,Ruby 2.0还引入了垃圾回收的改进,提升了程序运行效率。 ...

    Ruby 基础语法 视频教程1

    "`,`puts`是方法,字符串是参数。 - **条件表达式**:如`if`语句和`case`语句,用于根据条件执行不同的代码块。 学习这些基础概念是理解Ruby编程的关键。通过`ruby-4-variables.mp4`和`ruby-5-variables-rules....

    ruby2.1.6安装文件

    4. **块和Proc对象**:Ruby 2.1加强了Proc对象,使其可以作为方法参数传递,并且可以捕获局部变量,这在函数式编程风格中非常有用。 5. **垃圾收集**:Ruby 2.1对垃圾回收机制进行了优化,减少了内存占用,提升了...

    Ruby-一个Ruby的例子

    即使是在“其它杂项”中,也有许多值得关注的工具,如用于处理文件系统的`File`和`Dir`类,或者用于处理命令行参数的`ARGV`数组。 在压缩包`RubyDemo_First-master`中,我们可以假设这是一个简单的Ruby项目,可能...

    ruby脚本交互.rar

    通过命令行参数,我们可以传递参数给Ruby脚本并在脚本内部处理。标准输入/输出则允许脚本与用户或其它程序进行数据交换。文件操作允许脚本读写文件,实现数据持久化。网络通信则支持HTTP、TCP/IP等协议,使得脚本...

    Ruby 编程语言的书籍

    3. **函数与过程**:详细解释如何定义函数、传递参数以及返回值等。同时也会介绍块(block)的概念及其在不同场景下的应用。 4. **面向对象编程**: - **类与对象**:教授如何定义类、创建实例,并进行方法的定义与...

    Ruby元编程第二版中文

    5. **Proc对象与lambda**:Ruby的`Proc`和`lambda`可以创建匿名函数,它们可以被赋值给变量,作为参数传递,或者用作方法的返回值。 6. **块与yield**:Ruby的块是代码的匿名片段,可以用`yield`来调用。它们是元...

    ruby中文手册 chm

    它提供了每个方法的用法、参数和返回值,是开发者在编写代码时查找特定功能或方法的重要资源。 3. **RGSS入门教程**: RGSS是Ruby Game Scripting System的缩写,是Ruby的一个分支,主要用于游戏开发,特别是日本...

    ruby语法基础教程及Ruby教程中文版和安装文件

    Ruby的函数定义使用`def`关键字,可以有参数,也可以没有。例如: ```ruby def say_hello(name) puts "你好,#{name}!" end say_hello("小明") # 输出:你好,小明! ``` Ruby的强大之处在于其面向对象特性。...

    Ruby-QRcode一个用于解析QR码的Ruby库

    Ruby-QRcode库允许你调整生成的二维码的一些参数,如错误校正级别(L、M、Q、H)和模块大小。例如,将错误校正级别设为H并设置模块大小为5: ```ruby qr = RQRCode::QRCode.new("Your data", :size => 5, :level =>...

    Ruby-阿里云API文档中的公共参数计算

    在Ruby编程语言中,与阿里云API交互时,开发者经常需要处理一些公共参数,这些参数是请求接口必不可少的部分。阿里云API的公共参数通常包括AccessKeyId、SignatureMethod、SignatureVersion、Timestamp、Format、...

    ruby-1.9.2-rc2

    此外,它还更新了语法,比如引入了新的字符串字面量语法(%q, %Q等)和块参数语法。 描述中提到“可以使用的ruby”,这意味着这个压缩包包含了一个完整的Ruby运行环境,用户可以下载解压后在本地进行Ruby编程。同时...

    Ruby-Functo是ruby中的可组合方法对象

    Ruby是一种面向对象的编程语言,以其简洁的语法和强大的功能深受开发者喜爱。在Ruby的世界里,函数式编程的概念也被巧妙地融入其中,这体现在“Functo”这样的库上。标题提到的“Ruby-Functo”就是Ruby中实现可组合...

    ruby-2.5.3-x64 下载

    2. 块和闭包:Ruby支持块(代码块),可以作为参数传递,形成闭包,增强了代码的可读性和灵活性。 3. 元编程:Ruby允许在运行时修改自身,包括类和对象的行为,这是其强大之处。 4. 模块:用于实现代码重用和命名...

Global site tag (gtag.js) - Google Analytics