Muszę, na podstawie skryptu bash, sprawdzić, czy niektóre klejnoty Ruby są zainstalowane.
Myślałem, że mógłbym zrobić coś takiego
if ! gem list <name>; then do_stuff; fi
ale testowanie w wierszu poleceń za pomocą echo $?
pokazuje, że gem list <name>
zwraca 0, niezależnie od tego, czy faktycznie znaleziono nazwę.
Czy to oznacza, że muszę używać grep do filtrowania wyników listy klejnotów, czy jest lepszy sposób, aby sprawdzić, czy klejnot jest zainstalowany?
--version
npgem list -i compass --version 0.12.4
. : .Wygląda na to, że
gem spec
polecenie zakończy się niepowodzeniem z błędem, jeśli nazwany klejnot nie zostanie zainstalowany. Więc:Nie wiem, czy jest to kanoniczny sposób rozwiązania tego problemu, ale działa.
źródło
Możesz także użyć polecenia
fragment użyciaquery
podrzędnego dogem
polecenia.Będzie również szukał konkretnych wersji, używając
-v
przełącznika.źródło
gem query
: „Polecenie zapytania jest podstawą poleceń listy i wyszukiwania. Naprawdę powinieneś użyć zamiast tego poleceń listy i wyszukiwania. To polecenie jest zbyt trudne w użyciu”. ... nie chcę tworzyć złych nawyków w społeczności SO! :-)