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