手机
当前位置:查字典教程网 >脚本专栏 >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中正则表达式对字符串的匹配和替换操作

Rails中使用MySQL分区表一个提升性能的方法

Ruby中Hash哈希结构的基本操作方法小结

Ruby实现发送邮件的两个方法

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

浅析Ruby中的DATA对象

Rails中遇到错误跳转到统一提示错误页的方法

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

Ruby中字符串左侧补零方法实例

详解Ruby中的代码块对象Proc

精品推荐
分类导航