手机
当前位置:查字典教程网 >脚本专栏 >ruby专题 >Ruby中调用执行shell命令的6种方法
Ruby中调用执行shell命令的6种方法
摘要:碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法:1.Exec方法:Kernel#exec方法通过调用指定的...

碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法:

1.Exec方法:

Kernel#exec方法通过调用指定的命令取代当前进程例子:

复制代码 代码如下:

$ irb

>> exec 'echo "hello $HOSTNAME"'

hello nate.local

$

值得注意的是,exec方法用echo命令来取代了irb进程从而退出了irb。主要的缺点是,你无法从你的ruby脚本里知道这个命令是成功还是失败。

2.System方法

Kernel#system方法操作命令同上, 但是它是运行一个子shell来避免覆盖当前进程。如果命令执行成功则返回true,否则返回false。

复制代码 代码如下:

$ irb

>> system 'echo "hello $HOSTNAME"'

hello nate.local

=> true

>> system 'false'

=> false

>> puts $?

256

=> nil

>>

3.反引号(Backticks,Esc键下面那个键)

复制代码 代码如下:

$ irb

>> today = `date`

=> "Mon Mar 12 18:15:35 PDT 2007n"

>> $?

=> #<Process::Status: pid=25827,exited(0)>

>> $?.to_i

=> 0

这种方法是最普遍的用法了。它也是运行在一个子shell中。

4.IO#popen

复制代码 代码如下:

$ irb

>> IO.popen("date") { |f| puts f.gets }

Mon Mar 12 18:58:56 PDT 2007

=> nil

5.open3#popen3

复制代码 代码如下:

$ irb

>> stdin, stdout, stderr = Open3.popen3('dc')

=> [#<IO:0x6e5474>, #<IO:0x6e5438>, #<IO:0x6e53d4>]

>> stdin.puts(5)

=> nil

>> stdin.puts(10)

=> nil

>> stdin.puts("+")

=> nil

>> stdin.puts("p")

=> nil

>> stdout.gets

=> "15n"

6.Open4#popen4

复制代码 代码如下:

$ irb

>> require "open4"

=> true

>> pid, stdin, stdout, stderr = Open4::popen4 "false"

=> [26327, #<IO:0x6dff24>, #<IO:0x6dfee8>, #<IO:0x6dfe84>]

>> $?

=> nil

>> pid

=> 26327

>> ignored, status = Process::waitpid2 pid

=> [26327, #<Process::Status: pid=26327,exited(1)>]

>> status.to_i

=> 256

【Ruby中调用执行shell命令的6种方法】相关文章:

ruby 对象的初始化 方法

Ruby使用设计模式中的代理模式与装饰模式的代码实例

Ruby中嵌套对象转换成json的方法

Ruby编程中的命名风格指南

Ruby的安装与运行

Ruby中执行Linux shell命令的六种方法详解

Ruby实现的最短编辑距离计算方法

浅析Ruby中的DATA对象

借助RubyGnome2库进行GTK下的Ruby GUI编程的基本方法

ruby执行周期性任务的三种gem介绍

精品推荐
分类导航