我正在做这样的事情:
$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
有更简单/更短的方法吗?我只是检查是否存在打印队列,如果确实存在,则需要执行一项操作,如果不存在则需要执行另一项操作。谢谢!
答案 0 :(得分:4)
if system 'lpstat -p | grep -q "Eileen"'
puts "do something here"
else
puts "do something else"
end
但是,这会将命令的输出打印到stdout。如果你想避免这种情况,你可以这样做:
output = %x(lpstat -p | grep -q "Eileen")
if $?.success?
puts "do something here"
else
puts "do something else"
end
答案 1 :(得分:4)
如果在ruby脚本中使用lpstat -p,则可以测试输出。
printer = %x(lpstat -p)
if printer =~ /Eileen/
puts "do something here"
else
puts "do something else"
end
PS:你可能不需要在这里使用全局 - 甚至是变量:
if %x(lpstat -p) =~ /Eileen/