Оцените% x () как True или False в Ruby - PullRequest
3 голосов
/ 25 июня 2010

Я делаю что-то вроде этого:

$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

Есть ли более простой / короткий способ сделать это? Я просто проверяю, существует ли очередь на печать, и мне нужно сделать одно, если оно есть, и другое, если нет. Спасибо!

Ответы [ 2 ]

4 голосов
/ 25 июня 2010

Вы можете проверить вывод, если 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/
4 голосов
/ 25 июня 2010
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...