// 第一种 用反引号将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" 提示我们这可能是一个与使用Ruby语言构建的Shell脚本相关的项目,目标是获取或处理Alexa网络信息服务的数据。Alexa Internet是亚马逊公司的一个子公司,它提供全球...
其次,`shadowStatusRedis.sh`则是一个Shell脚本,它可能是用来调用Ruby脚本并管理文件系统的。它可能会检查当前正在写入的文件大小,一旦超过500MB,就会关闭当前文件,创建新的文件继续写入。Shell脚本中的`awk`、...
在调试和测试方面,Ruby提供了诸如irb(交互式Ruby shell)这样的工具,允许开发者在运行时检查和测试代码。Test::Unit和RSpec等测试框架使得编写和执行单元测试变得简单,确保代码质量。 总的来说,Ruby是一种强大...
碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法: 1.Exec方法: Kernel#exec方法通过调用指定的命令取代当前进程例子: 代码如下: $ irb >> exec ‘echo “hello $HOSTNAME”‘ ...
本文将深入探讨如何在Java中调用三种流行的脚本语言:Jython、JRuby和Groovy。 ### Jython Jython是Python的一个Java实现,它允许Java开发者利用Python的强大语法和丰富的库。要使用Jython,首先需要在项目中引入...
Shell脚本的独特优势在于它可以直接调用Linux系统中的大量内置命令,如grep、awk和sed,这使得它在处理操作系统级别的任务时尤为高效。 在Linux系统中,存在多种不同的Shell,如Bourne Shell(/bin/sh)、Bash(/...
`Laptop`是一个shell脚本,旨在简化在macOS笔记本电脑上配置开发环境的过程。这个脚本包含了安装和配置一系列常用工具、库和框架的指令,使开发者能够快速地将他们的macOS设备转变为高效的工作站,特别适合Web和移动...
标题 "dots:我的shell脚本集合" 暗示了这是一个个人收集的Shell脚本集合,用于管理和优化开发环境。Shell脚本是Unix或Linux操作系统中的命令行脚本,允许用户自动化一系列系统任务,提高效率。这个集合可能包含了...
Bash(Bourne-Again SHell)是Unix和Linux系统中最常用的命令行解释器,同时也是编写shell脚本的标准工具。Bash脚本允许用户通过一系列命令来创建可执行的文本文件,这些命令可以在终端中逐行输入,但通过脚本可以一...
在IT领域,尤其是在系统管理和自动化任务中,Shell脚本经常被用来处理各种任务,包括解析和操作XML数据。XML作为一种结构化的数据交换格式,广泛应用于配置文件、数据传输和存储等场景。本文将详细介绍如何利用Shell...
这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令。 exec exec会将指定的命令替换掉当前进程中的操作,指定命令结束后,进程结束。 代码如下: exec ‘echo “hello world”‘ print ‘abc’ ...
### Ruby语言概述 ...总的来说,Ruby不仅适合网络编程、Web应用开发、Shell脚本编写、数据处理和文本操作等多种任务,而且对于Python和Perl程序员来说尤其熟悉,因为Ruby在某些方面受到了Perl的启发。
irb 是一个交互式的Ruby Shell,非常适合快速测试代码片段。 - **启动irb**:在命令行输入`irb`。 - **退出irb**:输入`exit`或者`Ctrl+D`。 ### Mailing List FAQ Ruby有一个活跃的社区,其中邮件列表是非常重要的...
Perl是当时非常流行的脚本语言之一,而Ruby正是Matz想要创造的一种“更好的Perl”,因此Ruby这个名字既代表了他对Perl的敬意,也体现了他对新语言的美好愿景。 **1.3 Ruby的特点** - **简洁性**:Ruby的设计目标之...
- **交互式命令行:** Ruby提供了一个交互式的命令行工具,即`irb`(Interactive Ruby Shell)。在终端中输入`irb`即可启动该环境。 - **版本查询:** 要查看当前安装的Ruby版本,可以在终端输入`ruby --version`,...
- **SL4A (Scripting Layer for Android)**:允许在Android上运行Python、Perl、Ruby等脚本。通过Python Interpreter API,Java代码可以调用Python脚本并获取结果。 - **Kivy or PyDroid3**: 这些第三方库允许在...
4. **Shell脚本**:在Unix/Linux环境中,Shell脚本用于系统管理和任务自动化。掌握Bash或其他Shell语言的命令行工具、条件语句、循环结构以及函数定义,能让你更有效地管理操作系统。 5. **自动化任务**:脚本常常...
密码为“1km0”,解压后,用户可以获取到名为“服务器脚本”的一系列文件,这些文件通常包括不同类型的服务器脚本,比如PHP、Python、JavaScript、Shell等,用于自动化任务、数据处理、网站功能实现等。 服务器脚本...
- **Appendix B: Interactive Ruby Shell**:提供交互式的Ruby Shell使用指南。 - **Appendix C: Support**:提供技术支持的相关信息。 通过上述内容,读者可以全面了解Ruby语言的基础知识到高级应用,本书不仅是...