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-beepbopboopakan mengembalikan "1" seperti yum list installed traceroutekehendak 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:
returnPernyataan yang diganti dengan panggilan truedan falseyang 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 installedsecara langsung, tetapi (IMHO) fungsinya membuatnya lebih mudah untuk memahami apa yang terjadi, dan sintaksnya jauh lebih mudah diingat daripada yumdengan semua pengalihan untuk menekan outputnya.
$?, cukup bungkus perintah dengan syarat:if yum list installed "$package" >/dev/null 2>&1; then [...]