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

Ruby 执行shell命令方法

阅读更多

有时需要在程序中执行命令来完成操作,执行命令的方法如下:

  1. 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脚本实现判断成绩及格功能

    另一种方法是使用`case`语句,这在Shell脚本中相对复杂一些。`case`语句使用模式匹配,这里的模式是分数的字符串表示。由于Shell的限制,我们不能直接用范围来匹配,因此需要分别列出每个分数段。例如,`[0-9]`匹配...

    Ruby中调用执行shell命令的6种方法

    碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法: 1.Exec方法: Kernel#exec方法通过调用指定的命令取代当前进程例子: 代码如下:  $ irb  &gt;&gt; exec ‘echo “hello $HOSTNAME”‘  ...

    Alexa网络信息服务_Ruby_Shell_下载.zip

    2. **Shell脚本**:在Ruby中,可以使用`sh`或者`system`等方法来执行Shell命令,这使得Ruby成为编写系统管理脚本的有效工具。 3. **Alexa API**:如果项目是围绕Alexa网络信息服务,那么开发者可能使用了Alexa的API...

    一个示例警报repo,用于airbnbinterferon。_Ruby_Shell_.zip

    Ruby Shell通常指的是在Ruby环境中执行系统命令的工具,如`system`, `exec`等方法,或者是像`thor`这样的命令行工具库,它们允许开发者创建命令行界面来操作和交互与系统。 在压缩包文件名称列表中,我们只看到了...

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

    exec方法会替换当前的Ruby进程,直接执行指定的shell命令。一旦命令执行完成,进程就会结束,因此后续的Ruby代码不会被执行。例如: ```ruby exec 'echo "hello world"' print 'abc' ``` 在这个例子中,`abc`...

    shell+ruby.zip

    其次,`shadowStatusRedis.sh`则是一个Shell脚本,它可能是用来调用Ruby脚本并管理文件系统的。它可能会检查当前正在写入的文件大小,一旦超过500MB,就会关闭当前文件,创建新的文件继续写入。Shell脚本中的`awk`、...

    分钟教你shell脚本入门PPT课件.pptx

    编译型语言例如 C/C++/java,执行前需要将源代码转换成目标代码,而脚本编程语言例如 awk、perl、python、javascript、Ruby 和 shell,执行时需要解释器将代码转换成内部形式。 编译型语言的优点是效率高,但缺点是...

    用于检查应用程序健康状况的简单Rack中间件 -Ruby-Shell-下载

    健康检查的实现可能包括调用`system`或`spawn`函数来执行Shell命令,或者使用特定的Ruby库来检查特定的服务状态,如`pg`库检查PostgreSQL数据库,`net/http`库检查网络连接。 总的来说,这个Rack中间件是用Ruby编写...

    推荐系统的协同过滤_Ruby_Shell_下载.zip

    例如,脚本可能包含了下载资源、安装依赖、运行Ruby程序等命令。 推荐系统协同过滤的实现通常包括以下几个步骤: 1. 数据预处理:收集用户行为数据,如评分、点击、购买记录等,转化为适合算法处理的格式。 2. 计算...

    ruby解释性脚本语言中文文档

    Ruby提供了直接呼叫系统调用的能力,这意味着开发者可以直接与操作系统进行交互,执行底层任务,如文件操作、进程控制等。这为Ruby赋予了强大的系统级别的访问能力,同时也提高了程序的效率。 字符串操作是Ruby中的...

    ruby - ruby tutorial

    IRb(Interactive Ruby Shell)是 Ruby 的交互式 shell,允许开发者在命令行中直接执行 Ruby 代码。这对于调试和测试小段代码非常有用。 启动 IRb 的方法很简单,只需在终端或命令提示符中键入 `irb` 即可。例如: ...

    Ruby-rubybuild编译和安装Ruby

    对于Unix或类Unix系统(如Linux和macOS),可以在终端执行以下命令: ```bash $ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' &gt;&gt; ~/.bashrc $ echo '...

    Shell 入门实战到精通

    本文详细介绍了 Shell 编程语⾔、Shell 脚本常⽤命令、Shell 正则表达式、Shell 编程、Shell 变量、Shell 数组、Shell 进阶实战和 Shell 案例实战等知识点,为读者提供了一个系统的 Shell 编程指南。

    ruby在unbuntu的安装版本

    Ruby是一种强大的、面向对象的脚本语言,尤其适合Web开发,如使用Rails框架。在Ubuntu操作系统上安装Ruby,可以让你利用其丰富的库和工具来构建高效的应用程序。本指南将详细讲解如何在Ubuntu系统上安装Ruby 2.1.5这...

    Ruby-Cocaine用于在Ruby代码中执行命令行的库

    这个库使得开发者可以更加方便、简洁地处理系统级别的交互,比如运行shell命令或者与外部系统进行通信。Cocaine库的主要目标是简化命令行接口(CLI)的调用,使代码更加模块化,易于理解和维护。 Cocaine库的核心...

    Hello, Ruby World!

    - **交互式环境**:Ruby提供了IRB(Interactive Ruby Shell)这样的交互式环境,允许开发者在命令行中直接执行Ruby代码,便于调试和学习。 ##### 4. IRB与Pry - **IRB**:IRB是一个强大的交互式Ruby shell,可以...

    Ruby-irbtools改善Ruby的IRB控制台

    Ruby IRB(Interactive Ruby)是Ruby语言的标准交互式shell,允许开发者在运行时测试代码、探索类库和调试程序。然而,IRB本身的功能相对基础,对于一些高级的开发需求可能显得不够用。这就是irbtools的出现,它为...

Global site tag (gtag.js) - Google Analytics