首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试用ruby popen3检查命令是否存在

尝试用ruby popen3检查命令是否存在
EN

Stack Overflow用户
提问于 2013-10-17 11:48:51
回答 1查看 829关注 0票数 0

我试图用以下代码检查system命令是否存在:

代码语言:javascript
复制
require 'open3'

Open3.popen3('non-existing command') do |stdin, stdout, stderr, thread|
  exit_error = stderr.readlines
  if exit_error["No such file or directory"]
    puts "command not found"
  end
end

但是,它只是带着下面的错误消息崩溃,没有继续:

代码语言:javascript
复制
/home/pavel/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open3.rb:211:in `spawn': No such file or directory - non-existing (Errno::ENOENT)

为什么以及如何修复它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-17 12:29:52

如果Open3.popen3找不到命令,它就会引发Errno::ENOENT异常;因此,您只需从该异常中拯救:

代码语言:javascript
复制
require 'open3'

begin
  Open3.popen3('non-existing command') do |stdin, stdout, stderr, thread|
  end
rescue Errno::ENOENT
  puts "command not found"
end

#=> outputs "command not found"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19425909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档