извините я оставил бы это как комментарий, но я не могу: если бы Вам не нужна версия 5.3.3, и версия 5.3.1 прекрасна слишком затем, я предложил бы, чтобы Вы придерживались XAMPP, который делает всю работу установки для Вас
список гемов <имя> -i
вернет строку истина
, если гем установлен, и ложь
в противном случае. Кроме того, коды возврата соответствуют вашим ожиданиям.
Для получения дополнительной информации см. список справки по драгоценным камням
.
Правка: @Riateche правильно заметил, что это может давать ложные срабатывания, если вы ищете имя драгоценного камня, которое является подстрокой установленного другим способом. Чтобы избежать этого, используйте синтаксис регулярного выражения:
gem list '^<name>$' -i
(Пример: список драгоценных камней '^ mini $' -i
).
Похоже, что команда gem spec
завершится с ошибкой, если именованный гем не установлен. Итак:
if ! gem spec <name> > /dev/null 2>&1; then
echo "Gem <name> is not installed!"
fi
Я не знаю, является ли это каноническим способом решения этой проблемы, но он работает.
Вы также можете использовать подкоманду запроса
к команде gem
. Отрывок использования
$ gem query -i -n bundler
true
также будет искать конкретные версии, используя переключатель -v
.
$ gem query -i -n bundler -v 1.6.2.1
false