Encontré lo siguiente en una pregunta de StackOverflow semi-relacionada ; la respuesta que necesitaba no respondía realmente la pregunta allí (y no fue seleccionada como la respuesta correcta), así que pensé que la publicaría aquí para que otros la encuentren más fácilmente.
yum list installed PACKAGE_NAME
Este comando devuelve algunos resultados legibles por humanos, pero lo más importante es que devuelve un código de estado de salida; 0 indica que el paquete está instalado, 1 indica que el paquete no está instalado (no comprueba si el paquete es válido, por yum list installed herpderp-beepbopbooplo que devolverá un "1" igual yum list installed tracerouteque si no tiene instalado traceroute). Posteriormente puede marcar "$?" para este código de salida
Como la salida es algo contraria a la intuición, utilicé la versión "condensada" de @Chris Downs a continuación en una función de envoltura para hacer que la salida sea más "lógica" (es decir, 1 = instalada 0 = no instalada):
function isinstalled {
if yum list installed "$@" >/dev/null 2>&1; then
true
else
false
fi
}
el uso sería
if isinstalled $package; then echo "installed"; else echo "not installed"; fi
EDITAR:
Se reemplazaron las returndeclaraciones con llamadas a truey falseque ayudan a que la función sea más legible / intuitiva, al tiempo que devuelve los valores que bash espera (es decir, 0 para verdadero, 1 para falso).
Si solo está buscando un paquete en su script, es mejor que pruebe yum list installeddirectamente, pero (en mi humilde opinión) la función hace que sea más fácil de entender lo que está sucediendo, y su sintaxis es mucho más fácil de recordar que yumcon todos los redireccionamientos para suprimir su salida.
$?, simplemente ajuste el comando en un condicional:if yum list installed "$package" >/dev/null 2>&1; then [...]