Я знайшов наступне у напівзв’язаному питанні StackOverflow ; відповідь, яка мені потрібна, насправді не зовсім відповіла на це питання (і не було обрано як правильну відповідь), тому я зрозумів, що опублікую його тут, щоб іншим було легше знайти.
yum list installed PACKAGE_NAME
Ця команда повертає деякий читабельний для людини вихід, але ще важливіше повертає код стану виходу; 0 вказує , що пакет буде встановлений, 1 вказує , що пакет НЕ встановлено (не перевіряє , чи є пакет, так yum list installed herpderp-beepbopboop
буде повертати «1» так само , як yum list installed traceroute
воля , якщо не встановлено трасування). Ви можете згодом перевірити "$?" для цього вихідного коду.
Оскільки вихід є дещо контрінтуїтивним, я використав "конденсовану" версію @Chris Downs нижче у функції обгортки, щоб зробити результат більш "логічним" (тобто 1 = встановлено 0 = не встановлено):
function isinstalled {
if yum list installed "$@" >/dev/null 2>&1; then
true
else
false
fi
}
використання буде
if isinstalled $package; then echo "installed"; else echo "not installed"; fi
Редагувати:
Замінені return
висловлювання на дзвінки до true
та false
які допомагають зробити функцію більш читаною / інтуїтивно зрозумілою, водночас повертаючи значення, які очікує баш (тобто 0 для істинного, 1 для помилкового).
Якщо ви просто перевіряєте наявність одного пакету у вашому сценарії, можливо, вам буде краще провести тестування yum list installed
безпосередньо, але (IMHO) функція полегшує розуміння того, що відбувається, а його синтаксис запам'ятовується набагато легше, ніж yum
за всіма переадресаціями придушити його вихід.
$?
, просто загортайте команду умовно:if yum list installed "$package" >/dev/null 2>&1; then [...]