有时需要在程序中执行命令来完成操作,执行命令的方法如下:
- 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
分享到:
相关推荐
另一种方法是使用`case`语句,这在Shell脚本中相对复杂一些。`case`语句使用模式匹配,这里的模式是分数的字符串表示。由于Shell的限制,我们不能直接用范围来匹配,因此需要分别列出每个分数段。例如,`[0-9]`匹配...
碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法: 1.Exec方法: Kernel#exec方法通过调用指定的命令取代当前进程例子: 代码如下: $ irb >> exec ‘echo “hello $HOSTNAME”‘ ...
2. **Shell脚本**:在Ruby中,可以使用`sh`或者`system`等方法来执行Shell命令,这使得Ruby成为编写系统管理脚本的有效工具。 3. **Alexa API**:如果项目是围绕Alexa网络信息服务,那么开发者可能使用了Alexa的API...
Ruby Shell通常指的是在Ruby环境中执行系统命令的工具,如`system`, `exec`等方法,或者是像`thor`这样的命令行工具库,它们允许开发者创建命令行界面来操作和交互与系统。 在压缩包文件名称列表中,我们只看到了...
exec方法会替换当前的Ruby进程,直接执行指定的shell命令。一旦命令执行完成,进程就会结束,因此后续的Ruby代码不会被执行。例如: ```ruby exec 'echo "hello world"' print 'abc' ``` 在这个例子中,`abc`...
其次,`shadowStatusRedis.sh`则是一个Shell脚本,它可能是用来调用Ruby脚本并管理文件系统的。它可能会检查当前正在写入的文件大小,一旦超过500MB,就会关闭当前文件,创建新的文件继续写入。Shell脚本中的`awk`、...
编译型语言例如 C/C++/java,执行前需要将源代码转换成目标代码,而脚本编程语言例如 awk、perl、python、javascript、Ruby 和 shell,执行时需要解释器将代码转换成内部形式。 编译型语言的优点是效率高,但缺点是...
健康检查的实现可能包括调用`system`或`spawn`函数来执行Shell命令,或者使用特定的Ruby库来检查特定的服务状态,如`pg`库检查PostgreSQL数据库,`net/http`库检查网络连接。 总的来说,这个Rack中间件是用Ruby编写...
例如,脚本可能包含了下载资源、安装依赖、运行Ruby程序等命令。 推荐系统协同过滤的实现通常包括以下几个步骤: 1. 数据预处理:收集用户行为数据,如评分、点击、购买记录等,转化为适合算法处理的格式。 2. 计算...
Ruby提供了直接呼叫系统调用的能力,这意味着开发者可以直接与操作系统进行交互,执行底层任务,如文件操作、进程控制等。这为Ruby赋予了强大的系统级别的访问能力,同时也提高了程序的效率。 字符串操作是Ruby中的...
IRb(Interactive Ruby Shell)是 Ruby 的交互式 shell,允许开发者在命令行中直接执行 Ruby 代码。这对于调试和测试小段代码非常有用。 启动 IRb 的方法很简单,只需在终端或命令提示符中键入 `irb` 即可。例如: ...
对于Unix或类Unix系统(如Linux和macOS),可以在终端执行以下命令: ```bash $ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc $ echo '...
本文详细介绍了 Shell 编程语⾔、Shell 脚本常⽤命令、Shell 正则表达式、Shell 编程、Shell 变量、Shell 数组、Shell 进阶实战和 Shell 案例实战等知识点,为读者提供了一个系统的 Shell 编程指南。
Ruby是一种强大的、面向对象的脚本语言,尤其适合Web开发,如使用Rails框架。在Ubuntu操作系统上安装Ruby,可以让你利用其丰富的库和工具来构建高效的应用程序。本指南将详细讲解如何在Ubuntu系统上安装Ruby 2.1.5这...
这个库使得开发者可以更加方便、简洁地处理系统级别的交互,比如运行shell命令或者与外部系统进行通信。Cocaine库的主要目标是简化命令行接口(CLI)的调用,使代码更加模块化,易于理解和维护。 Cocaine库的核心...
- **交互式环境**:Ruby提供了IRB(Interactive Ruby Shell)这样的交互式环境,允许开发者在命令行中直接执行Ruby代码,便于调试和学习。 ##### 4. IRB与Pry - **IRB**:IRB是一个强大的交互式Ruby shell,可以...
Ruby IRB(Interactive Ruby)是Ruby语言的标准交互式shell,允许开发者在运行时测试代码、探索类库和调试程序。然而,IRB本身的功能相对基础,对于一些高级的开发需求可能显得不够用。这就是irbtools的出现,它为...