2011-02-09 2 views
1

Я пытаюсь сделать следующее ..Выполнить команду Linux в рубин

if "ps | grep -e file" then 
     true; 
    else 
     false; 

Что мне нужно сделать, чтобы сделать строку п, если заявление выполнить команду Linux в списке?

+0

Возможный дубликат [Calling Bash Commands From Ruby] (http://stackoverflow.com/questions/2232/calling-bash-commands-from-ruby) –

ответ

8

system("command") Просто используйте. Он вернет true, если команда была успешно выполнена.

EDIT Просто прочитайте свой вопрос еще раз, и я считаю, что то, что вы ищете это:

if `ps | grep -e file`.empty? # no matches 
    true 
else 
    false 
end 
+0

Собирался добавить это пустое? звоните, пожалуйста, добавьте окончательный отчет. – igorw

+0

Упс - исправлено это. – goncalossilva

1

Не надо называть grep. Просто позвоните ps и пусть Ruby найдет то, что вы хотите.

if `ps`["file"] 
    ... 
else 
    ... 
end 
0

Linux пс имеет ключ -c для проверки конкретного названия программы:

if "ps -C file" then 
    true; 
else 
    false; 

однако - если у вас есть конструкция, как

if (predicate) then true; else false; 

она должна быть такой же, как

(predicate) 
0

Вы можете управлять своим Ли Nux Команда как этот

`echo "done"` 

Это будет печатать done в качестве вывода.

Смежные вопросы