2010-06-25 140 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