Saya menemukan berikut ini pada pertanyaan StackOverflow semi terkait ; jawaban yang saya butuhkan sebenarnya tidak cukup menjawab pertanyaan di sana (dan tidak dipilih sebagai jawaban yang benar) jadi saya pikir saya akan mempostingnya di sini agar orang lain merasa lebih mudah.
yum list installed PACKAGE_NAME
Perintah ini mengembalikan beberapa keluaran yang dapat dibaca manusia, tetapi yang lebih penting mengembalikan kode status keluar; 0 menunjukkan paket yang diinstal, 1 menunjukkan paket tersebut tidak terpasang (tidak memeriksa apakah paket tersebut valid, sehingga yum list installed herpderp-beepbopboop
akan mengembalikan "1" seperti yum list installed traceroute
kehendak jika Anda tidak memiliki traceroute diinstal). Anda selanjutnya dapat memeriksa "$?" untuk kode keluar ini.
Karena outputnya agak kontra-intuitif, saya menggunakan versi "condensed" @Rris Downs di bawah ini dalam fungsi wrapper untuk membuat output lebih "logis" (yaitu 1 = diinstal 0 = tidak diinstal):
function isinstalled {
if yum list installed "$@" >/dev/null 2>&1; then
true
else
false
fi
}
penggunaan akan
if isinstalled $package; then echo "installed"; else echo "not installed"; fi
SUNTING:
return
Pernyataan yang diganti dengan panggilan true
dan false
yang membantu membuat fungsi lebih mudah dibaca / intuitif, sambil mengembalikan nilai yang diharapkan bash (yaitu 0 untuk true, 1 untuk false).
Jika Anda hanya memeriksa satu paket dalam skrip Anda, Anda mungkin lebih baik menguji yum list installed
secara langsung, tetapi (IMHO) fungsinya membuatnya lebih mudah untuk memahami apa yang terjadi, dan sintaksnya jauh lebih mudah diingat daripada yum
dengan semua pengalihan untuk menekan outputnya.
$?
, cukup bungkus perintah dengan syarat:if yum list installed "$package" >/dev/null 2>&1; then [...]