首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ruby中检查if语句中的bash命令

在Ruby中检查if语句中的bash命令
EN

Stack Overflow用户
提问于 2013-04-04 02:58:27
回答 2查看 3K关注 0票数 6

如何在Ruby的if语句中检查bash命令的返回值(true/false)?我希望这样的东西能起作用,

代码语言:javascript
复制
if ("/usr/bin/fs wscell > /dev/null 2>&1")
                has_afs = "true"
        else
                has_afs = "false"
        end

它会报错,错误含义如下,它将始终返回true。

代码语言:javascript
复制
 (irb):5: warning: string literal in condition

正确的语法是什么?

更新:

代码语言:javascript
复制
 /usr/bin/fs wscell 

查找已安装和正在运行的afs。它会抛出像这样的字符串,

代码语言:javascript
复制
 This workstation belongs to cell <afs_server_name>

如果afs未运行,该命令将退出,状态为1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-04 03:02:26

你需要的是反引号而不是双引号。要检查程序输出,请执行以下操作:

代码语言:javascript
复制
has_afs = `/usr/bin/fs wscell > /dev/null 2>&1` == SOMETHING ? 'true' : 'false'

你要找的东西被填满了。

票数 7
EN

Stack Overflow用户

发布于 2013-04-04 03:07:09

您可能应该使用system()或反引号和,然后检查命令($?.exitstatus)的退出状态

这里有一个很好的快速提示:http://rubyquicktips.com/post/5862861056/execute-shell-commands)

更新:

代码语言:javascript
复制
system("/usr/bin/fs wscell > /dev/null 2>&1")  # Returns false if command failed
has_afs = $?.exitstatus != 1  # Check if afs is running
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15795736

复制
相关文章

相似问题

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