Выход из программы в ruby - PullRequest
       1

Выход из программы в ruby

0 голосов
/ 31 января 2012

Я пишу некоторый код на ruby ​​и хочу проверить наличие команды перед запуском программы.Если команда не установлена, я хочу отобразить сообщение об ошибке и выйти из программы.Итак, сейчас я делаю это.

 puts `type -P spark &>/dev/null && continue || { echo "You must install spark"; exit 0; } `

Итак, все работает отлично, НО, «выход 0» - нет, и я не могу понять, почему.У вас есть идея, чтобы это исправить?Или еще лучше, есть ли другой способ сделать это?

Ответы [ 2 ]

3 голосов
/ 31 января 2012

Причина, по которой вы не выходите из своего сценария, заключается в том, что вызов для выхода находится в обратном порядке. Он выходит из подоболочки, вызываемой для запуска spark, но это не тот процесс, который интерпретирует ваш скрипт ruby.

Вы можете проверить содержимое $? переменная, которая возвращает Process: Status для команды backtick после ее выполнения.

Однако, как предположил Даниэль Питтман, было бы проще проверить, доступен ли исполняемый файл, используя что-то вроде FileTest. Однако вы, вероятно, захотите связать это с проверкой возвращаемого значения на случай, если произойдет какой-то другой, более сложный сбой.

2 голосов
/ 31 января 2012

Гораздо лучший способ сделать это:

ENV["PATH"].split(':').any? {|x| FileTest.executable? "#{x}/spark" }

Сезон по вкусу для получения полного пути, или использование File.join для построения пути, или разделители пути платформы, или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...