`
wuhuizhong
  • 浏览: 684534 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

Ruby 调用Shell脚本

    博客分类:
  • ROR
 
阅读更多

 

// 第一种 用反引号将shell命令引起来,如果是shell脚本可写上绝对路径(总之就是可以直接运行的)
ipinfo=`ifconfig`
puts ipinfo

// 第二种 用system函数来实现
system 'echo "hello $HOSTNAME"'

// 第三种 用IO类的popen方法
IO.popen("date") { |f| puts f.gets }

// 第四种 用Ruby标准库open3中的方法
require "open3"
stdin, stdout, stderr = Open3.popen3('date')
stdin.puts('')
stdout.gets
stderr.gets

六种用ruby?用?行shell命令的方法:

http://blackanger.blog.51cto.com/140924/43730

 

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

 

 

 

 

分享到:
评论

相关推荐

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

    标题 "Alexa网络信息服务_Ruby_Shell_下载.zip" 提示我们这可能是一个与使用Ruby语言构建的Shell脚本相关的项目,目标是获取或处理Alexa网络信息服务的数据。Alexa Internet是亚马逊公司的一个子公司,它提供全球...

    shell+ruby.zip

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

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

    在调试和测试方面,Ruby提供了诸如irb(交互式Ruby shell)这样的工具,允许开发者在运行时检查和测试代码。Test::Unit和RSpec等测试框架使得编写和执行单元测试变得简单,确保代码质量。 总的来说,Ruby是一种强大...

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

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

    java调用脚本语言笔记(jython,jruby,groovy)

    本文将深入探讨如何在Java中调用三种流行的脚本语言:Jython、JRuby和Groovy。 ### Jython Jython是Python的一个Java实现,它允许Java开发者利用Python的强大语法和丰富的库。要使用Jython,首先需要在项目中引入...

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

    这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令。 exec exec会将指定的命令替换掉当前进程中的操作,指定命令结束后,进程结束。 代码如下: exec ‘echo “hello world”‘ print ‘abc’ ...

    linux运维学习笔记:Shell前言.pdf

    Shell脚本的独特优势在于它可以直接调用Linux系统中的大量内置命令,如grep、awk和sed,这使得它在处理操作系统级别的任务时尤为高效。 在Linux系统中,存在多种不同的Shell,如Bourne Shell(/bin/sh)、Bash(/...

    linux-Laptop一个用于为Web和移动开发的搭建一个macOSlaptop的shell脚本

    `Laptop`是一个shell脚本,旨在简化在macOS笔记本电脑上配置开发环境的过程。这个脚本包含了安装和配置一系列常用工具、库和框架的指令,使开发者能够快速地将他们的macOS设备转变为高效的工作站,特别适合Web和移动...

    dots:我的shell脚本集合

    标题 "dots:我的shell脚本集合" 暗示了这是一个个人收集的Shell脚本集合,用于管理和优化开发环境。Shell脚本是Unix或Linux操作系统中的命令行脚本,允许用户自动化一系列系统任务,提高效率。这个集合可能包含了...

    Scripts:Python,Ruby和bash脚本

    Bash(Bourne-Again SHell)是Unix和Linux系统中最常用的命令行解释器,同时也是编写shell脚本的标准工具。Bash脚本允许用户通过一系列命令来创建可执行的文本文件,这些命令可以在终端中逐行输入,但通过脚本可以一...

    利用Shell解析处理XML的方法汇总

    在IT领域,尤其是在系统管理和自动化任务中,Shell脚本经常被用来处理各种任务,包括解析和操作XML数据。XML作为一种结构化的数据交换格式,广泛应用于配置文件、数据传输和存储等场景。本文将详细介绍如何利用Shell...

    essential_ruby

    ### Ruby语言概述 ...总的来说,Ruby不仅适合网络编程、Web应用开发、Shell脚本编写、数据处理和文本操作等多种任务,而且对于Python和Perl程序员来说尤其熟悉,因为Ruby在某些方面受到了Perl的启发。

    ruby programming

    irb 是一个交互式的Ruby Shell,非常适合快速测试代码片段。 - **启动irb**:在命令行输入`irb`。 - **退出irb**:输入`exit`或者`Ctrl+D`。 ### Mailing List FAQ Ruby有一个活跃的社区,其中邮件列表是非常重要的...

    ruby初学者教程(对初学者很有帮助)

    Perl是当时非常流行的脚本语言之一,而Ruby正是Matz想要创造的一种“更好的Perl”,因此Ruby这个名字既代表了他对Perl的敬意,也体现了他对新语言的美好愿景。 **1.3 Ruby的特点** - **简洁性**:Ruby的设计目标之...

    Ruby Reference Sheet.pdf

    - **交互式命令行:** Ruby提供了一个交互式的命令行工具,即`irb`(Interactive Ruby Shell)。在终端中输入`irb`即可启动该环境。 - **版本查询:** 要查看当前安装的Ruby版本,可以在终端输入`ruby --version`,...

    java android 执行脚本代码(java代码)

    - **SL4A (Scripting Layer for Android)**:允许在Android上运行Python、Perl、Ruby等脚本。通过Python Interpreter API,Java代码可以调用Python脚本并获取结果。 - **Kivy or PyDroid3**: 这些第三方库允许在...

    小趣味脚本___下载.zip

    4. **Shell脚本**:在Unix/Linux环境中,Shell脚本用于系统管理和任务自动化。掌握Bash或其他Shell语言的命令行工具、条件语句、循环结构以及函数定义,能让你更有效地管理操作系统。 5. **自动化任务**:脚本常常...

    服务器脚本.zip

    密码为“1km0”,解压后,用户可以获取到名为“服务器脚本”的一系列文件,这些文件通常包括不同类型的服务器脚本,比如PHP、Python、JavaScript、Shell等,用于自动化任务、数据处理、网站功能实现等。 服务器脚本...

    ruby语法基础教程

    - **Ruby-irb**:介绍Interactive Ruby Shell(irb),它是Ruby的内置交互式编程环境,用于测试代码片段和学习语言。 接下来,教程将深入到Ruby的具体语法和概念: 3. **变量和数据类型** - Ruby中的变量分类...

    Programming Ruby

    - **Appendix B: Interactive Ruby Shell**:提供交互式的Ruby Shell使用指南。 - **Appendix C: Support**:提供技术支持的相关信息。 通过上述内容,读者可以全面了解Ruby语言的基础知识到高级应用,本书不仅是...

Global site tag (gtag.js) - Google Analytics