Yarı ile ilgili bir StackOverflow sorusunda aşağıdakileri buldum ; İhtiyacım olan cevap aslında oradaki soruyu tam olarak cevaplamadı (ve doğru cevap olarak seçilmedi), bu yüzden başkalarının daha kolay bulması için buraya göndereceğimi düşündüm.
yum list installed PACKAGE_NAME
Bu komut insan tarafından okunabilen bir çıktı verir, fakat daha da önemlisi bir çıkış durumu kodu döndürür; 0 paket gösterir edilir 1 paket gösterir, yüklü değil yüklü (paket geçerli olup olmadığını kontrol etmez, bu nedenle yum list installed herpderp-beepbopboop
tıpkı bir "1" dönecektir yum list installed traceroute
Eğer traceroute yüklü yoksa irade). Daha sonra "$?" İşaretini kullanabilirsiniz. bu çıkış kodu için.
Çıktı biraz karşı sezgisel olduğundan, çıktıyı daha "mantıklı" hale getirmek için aşağıdaki bir sarmalayıcı işlevinde @Chris Downs'ın "yoğunlaştırılmış" versiyonunu kullandım (yani 1 = yüklü 0 = kurulu değil):
function isinstalled {
if yum list installed "$@" >/dev/null 2>&1; then
true
else
false
fi
}
kullanım olurdu
if isinstalled $package; then echo "installed"; else echo "not installed"; fi
DÜZENLE:
Çağrılan değerleri döndürürken, işlevi daha okunaklı / sezgisel hale getiren return
çağrıları olan true
ve false
yerine bash beklenen değerleri döndürür (örneğin doğru için 0, yanlış için 1).
Komut dosyanızda yalnızca bir paketi kontrol ediyorsanız, yum list installed
doğrudan test etmekten daha iyi olabilirsiniz , ancak (IMHO) işlev ne olup bittiğini anlamanızı kolaylaştırır ve sözdiziminin hatırlanması yum
tüm yönlendirmelerden daha kolaydır çıktılarını bastırmak için.
$?
, sadece komutu koşullu bir şekildeif yum list installed "$package" >/dev/null 2>&1; then [...]