Ruby中运行外部程序

有些时候我们需要在脚本中执行一个系统命令或运行一个外部程序,Ruby也提供了这样的功能,有如下三种方法可以在Ruby中运行外部程序:

1. `command`

直接使用`(键盘上Esc下边那个按键)把一个字符串括起来,Ruby会把该字符串当成是一个外部应用调用,等待执行命令的子进程结束并返回应用的输出。在执行command之前,Ruby会先处理command中的反斜杠逃逸符和展开式#{}。在命令返回之后,可以使用$?变量来查看子进程PID和返回值:

command = "ls"
ret = `#{command}`
puts "$?"

输出:
pid 24331 exit 0

2. %x命令输出表示法

%x!command!同`command`的功能一样,其中!可以被任意非字母、数字的字符替换,比如%x(),%x**,甚至可以用换行符(回车)来替代!。%x表示法同样会处理command中的反斜杠和展开式:

command = "ls"
ret = %x #{command} 

3. Kernel.system(cmd, [arg1, [arg2[, ...]]])

system(command)函数只能执行外部应用,却不会返回命令的输出,如果不需要命令的数出的话可以使用这种方法。system(command)返回的是子进程的结束状态,如果子进程正常退出(exit 0)则system返回true,否则返回false。同样可以利用$?来查看具体的返回值:

command = “touch a.rb"
ret = system(command)

4. Kernel.spawn(cmd, [arg1, [arg2[, ...]]])

同样是运行外部应用,spawn函数并不会等待子进程结束(1. 2. 3. 三种方法都会等待子进程结束),而是直接返回子进程的PID:

# a.rb 只有一行 puts "hello"
ret = spawn("ruby", "a.rb")
puts "R:#{ret}"

输出:
R:24524
hello

 

转载于:https://www.cnblogs.com/zealoct/p/3215338.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值