मैंने एक अर्ध-संबंधित स्टैकऑवरफ्लो प्रश्न पर निम्नलिखित पाया ; मुझे जिस उत्तर की आवश्यकता थी, वह वास्तव में वहाँ सवाल का बहुत जवाब नहीं था (और सही उत्तर के रूप में नहीं चुना गया था) इसलिए मुझे लगा कि मैं इसे दूसरों के लिए आसान खोजने के लिए यहां पोस्ट करूंगा।
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 [...]