ruby脚本调用linux环境变量,在Ruby脚本中运行命令行命令

是。 有几种方法:

一种。 使用Open3或''':

%x(echo hi) #=> "hi\n"

%x(echo hi >&2) #=> "" (prints 'hi' to stderr)

`echo hi` #=> "hi\n"

`echo hi >&2` #=> "" (prints 'hi' to stderr)

这些方法将返回stdout,并将stderr重定向到程序。

湾 使用Open3:

system 'echo hi' #=> true (prints 'hi')

system 'echo hi >&2' #=> true (prints 'hi' to stderr)

system 'exit 1' #=> nil

如果命令成功,此方法返回Open3。 它将所有输出重定向到程序。

C。 使用Open3:

fork { exec 'sleep 60' } # you see a new process in top, "sleep", but no extra ruby process.

exec 'echo hi' # prints 'hi'

# the code will never get here.

这将使用命令创建的进程替换当前进程。

d。 (ruby 1.9)使用Open3:

spawn 'sleep 1; echo one' #=> 430

spawn 'echo two' #=> 431

sleep 2

# This program will print "two\none".

此方法不等待进程退出并返回PID。

即 使用Open3:

io = IO.popen 'cat', 'r+'

$stdout = io

puts 'hi'

$stdout = IO.new 0

p io.read(1)

io.close

# prints '"h"'.

此方法将返回一个Open3对象,该对象表示新进程的输入/输出。 它也是我所知道的唯一提供程序输入的方法。

F。 使用Open3(在1.9.2及更高版本上)

require 'open3'

stdout,stderr,status = Open3.capture3(some_command)

STDERR.puts stderr

if status.successful?

puts stdout

else

STDERR.puts "OH NO!"

end

Open3具有几个其他功能,用于获取对两个输出流的显式访问。 它类似于popen,但可以访问stderr。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值