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

时间:2013-04-03 18:58:27

标签: ruby

如何在Ruby中的if语句中检查bash命令的返回值(true / false)。我想要这样的东西工作,

if ("/usr/bin/fs wscell > /dev/null 2>&1")
                has_afs = "true"
        else
                has_afs = "false"
        end

它抱怨以下错误含义,它将始终返回true。

 (irb):5: warning: string literal in condition

正确的语法是什么?

更新:

 /usr/bin/fs wscell 

查找afs安装和运行状况。它将抛出一个这样的字符串,

 This workstation belongs to cell <afs_server_name>

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

2 个答案:

答案 0 :(得分:6)

你需要反引号而不是双引号。检查程序的输出:

has_afs = `/usr/bin/fs wscell > /dev/null 2>&1` == SOMETHING ? 'true' : 'false'

在SOMETHING中填写了您正在寻找的内容。

答案 1 :(得分:4)

你应该使用system()或Backticks和然后检查命令的退出状态($ ?. exitstatus)

快速阅读:http://rubyquicktips.com/post/5862861056/execute-shell-commands

更新:

system("/usr/bin/fs wscell > /dev/null 2>&1")  # Returns false if command failed
has_afs = $?.exitstatus != 1  # Check if afs is running