2010-06-25 94 views
3

我在做这样的事情:评估%×()为真或假的红宝石

$printer = %x(lpstat -p | grep -q "Eileen" && echo "true" || echo "nil").chomp 

if $printer == "true" 
    puts "do something here" 
else 
    puts "do something else" 
end 

有没有更简单/短的方式来做到这一点?我只是检查一下打印队列是否存在,如果存在则需要做一件事,如果不存在则需要另一件事。谢谢!

回答

4

你可以测试输出如果lpstat -p在ruby脚本中。

printer = %x(lpstat -p) 

if printer =~ /Eileen/ 
    puts "do something here" 
else 
    puts "do something else" 
end 

PS:你可能不需要在这里使用一个全球性的 - 甚至是一个变量:

if %x(lpstat -p) =~ /Eileen/ 
+0

这个工作正是我需要它。谢谢! – user376304 2010-06-27 14:19:15

4
if system 'lpstat -p | grep -q "Eileen"' 
    puts "do something here" 
else 
    puts "do something else" 
end 

但是,这会将命令的输出打印到标准输出。如果你想避免这种情况,你可以这样做:

output = %x(lpstat -p | grep -q "Eileen") 
if $?.success? 
    puts "do something here" 
else 
    puts "do something else" 
end