在centos系统上,输入sudo yum install ruby安装ruby
Hello World
在命令行中输入irb,进入ruby交互式命令行
开始hello world
#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。
$bash 表 示 系 统 提 示 符 , 表示系统提示符, 表示系统提示符, 表示此用户为普通用户,超级用户的提示符是#。
bash是shell的一种,是linux下最常用的一种shell。
$bash的意思是执行一个子shell,此子shell为bash。
以下引用自:四种不同的脚本运行方式的区别
使用fork方式运行script时, 就是让shell(parent process)产生一个child process去执行该script,当child process结束后,会返回parent process,但parent process的环境是不会因child process的改变而改变的。
使用source方式运行script时, 就是让script在当前process内执行, 而不是产生一个child process来执行。由于所有执行结果均于当前process内完成,若script的环境有所改变, 当然也会改变当前process环境了。
使用exec方式运行script时, 它和source一样,也是让script在当前process内执行,但是process内的原代码剩下部分将被终止。同样,process内的环境随script改变而改变。
shell中,source 是内置命令,用途是读取文件中内容,并在当前shell中逐条执行。这种方式执行的脚本无须执行权限。source命令可以缩写为一个小数点
//其中test.sh内容如下:
#!/bin/bash
cd ..
同样都是cd …,为什么执行完脚本当前bash目录不变,这就证明了这是由子bash执行,而非交互式bash(两次执行,第一次是用source,第二次是用bash,当前的位置可以看中括号的最后面,这里,~表示/root目录,/表示根目录)
设置编码
#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-
puts “你好,世界!”;
Ruby 把分号和换行符解释为语句的结尾。
多行字符串和注释
以下代码参考
:ruby用法
建立多行字符串
#!/usr/bin/ruby -w
# -*- coding : utf-8 -*-
print <<EOF
这是第一种方式创建here document 。
多行字符串。
EOF
print <<"EOF"; # 与上面相同
这是第二种方式创建here document 。
多行字符串。
EOF
print <<`EOC` # 执行命令(单引号后面执行命令)
echo hi there
echo lo there
EOC
print <<"foo", <<"bar" # 您可以把它们进行堆叠
I said foo.
foo
I said bar.
bar
这是第一种方式创建here document 。
多行字符串。
这是第二种方式创建here document 。
多行字符串。
hi there
lo there
I said foo.
I said bar.
在程序运行前调用某段代码
BEGIN {
code
}
在程序结束时调用某段代码
END {
code
}
注释是用#
多行注释还可以用:
=begin
这是注释。
这也是注释。
这也是注释。
这还是注释。
=end
使用#{expr}
使用序列 #{ expr } 替换任意 Ruby 表达式的值为一个字符串。在这里,expr 可以是任意的 Ruby 表达式。
单引号里面都是表达原来的字面义,即反斜杠也会被当作反斜杠,而不会和其他字符联合起来(除了\ 和 ’ )。双引号里反斜杠可以和其他字符联合起来表达其他意思。
ruby的保留字不能作为常量或变量的名称。但是,它们可以作为方法名。
区间
一个范围表示一个区间。
范围是通过设置一个开始值和一个结束值来表示。范围可使用 s…e 和 s…e 来构造,或者通过 Range.new 来构造。
使用 … 构造的范围从开始值运行到结束值(包含结束值)。使用 … 构造的范围从开始值运行到结束值(不包含结束值)。当作为一个迭代器使用时,范围会返回序列中的每个值。
范围 (1…5) 意味着它包含值 1, 2, 3, 4, 5,范围 (1…5) 意味着它包含值 1, 2, 3, 4 。
五种变量
参考自:ruby变量
Ruby 支持五种类型的变量。
一般小写字母、下划线开头:变量(Variable)。
$开头:全局变量(Global variable)。
@开头:实例变量(Instance variable)。
@@开头:类变量(Class variable)类变量被共享在整个继承链中
大写字母开头:常数(Constant)。
1.实例变量以 @ 开头。未初始化的实例变量的值为 nil,在使用 -w 选项后,会产生警告
2.类变量以 @@ 开头,且必须初始化后才能在方法定义中使用。引用一个未初始化的类变量会产生错误。类变量在定义它的类或模块的子类或子模块中可共享使用。在使用 -w 选项后(#!/usr/bin/ruby -w),重载类变量会产生警告。
3.局部变量以小写字母或下划线 _ 开头。
当调用一个未初始化的局部变量时,它被解释为调用一个不带参数的方法。
4.常量以大写字母开头。定义在类或模块内的常量可以从类或模块的内部访问,定义在类或模块外的常量可以被全局访问。
常量不能定义在方法内。引用一个未初始化的常量会产生错误。对已经初始化的常量赋值会产生警告。
nil: 代表 undefined 的值。
__FILE__: 当前源文件的名称。
__LINE__: 当前行在源文件中的编号。
比较运算符
ruby也支持并行赋值:
a, b, c = 10, 20, 30
a, b = b, c
特殊运算符
defined? 是一个特殊的运算符,以方法调用的形式来判断传递的表达式(包括变量和方法等等)是否已定义。它返回表达式的描述字符串,如果表达式未定义则返回 nil。
foo = 42
defined? foo # => "local-variable"
defined? $_ # => "global-variable"
defined? bar # => nil(未定义)
defined? puts # => "method"
defined? puts(bar) # => nil(在这里 bar 未定义)
::运算符
可以通过在方法名称前加上类或模块名称和 . 来调用类或模块中的方法。你可以使用类或模块名称和两个冒号 :: 来引用类或模块中的常量。
:: 是一元运算符,允许在类或模块内定义常量、实例方法和类方法,可以从类或模块外的任何地方进行访问。
在 Ruby 中,类和方法也可以被当作常量。
只需要在表达式的常量名前加上 :: 前缀,即可返回适当的类或模块对象。
如果 :: 前的表达式为类或模块名称,则返回该类或模块内对应的常量值;如果 :: 前未没有前缀表达式,则返回主Object类中对应的常量值。
MR_COUNT = 0 # 定义在主 Object 类上的常量
module Foo
MR_COUNT = 0
::MR_COUNT = 1 # 设置全局计数为 1
MR_COUNT = 2 # 设置局部计数为 2
end
puts MR_COUNT # 这是全局常量
puts Foo::MR_COUNT # 这是 "Foo" 的局部常量