में bashहर चर अनिवार्य रूप से एक स्ट्रिंग (या किसी सरणी या एक समारोह है, लेकिन नियमित रूप से चर के बारे में यहाँ आइए बात करते हैं) है।
परीक्षण आदेशों के रिटर्न मूल्यों के आधार पर स्थितियों को पार्स किया जाता है - रिटर्न वैल्यू एक चर नहीं है, यह एक निकास स्थिति है। जब आप का मूल्यांकन if [ ... ]या if [[ ]]या if grep somethingया ऐसा कुछ, वापसी मान 0 (नहीं स्ट्रिंग 0, लेकिन बाहर निकलने स्थिति 0 = सफलता) सच और बाकी मतलब झूठी (जिसका अर्थ हां, तो क्या आप संकलित प्रोग्रामिंग भाषाओं में करने के लिए उपयोग किया जाता है से बिल्कुल विपरीत, लेकिन क्योंकि सफल होने का एक तरीका और विफल होने के कई तरीके हैं, और निष्पादन का अपेक्षित परिणाम आमतौर पर सफलता है, 0 का उपयोग सबसे आम डिफ़ॉल्ट परिणाम के रूप में किया जाता है यदि कुछ भी गलत नहीं होता है)। यह बहुत उपयोगी है क्योंकि किसी भी बाइनरी को परीक्षण के रूप में इस्तेमाल किया जा सकता है - अगर यह विफल हो जाता है, तो यह गलत है, अन्यथा यह सच है।
trueऔर falseप्रोग्राम (आमतौर पर बिल्डिंस द्वारा ओवरराइड) केवल उपयोगी छोटे प्रोग्राम हैं जो कुछ भी नहीं करते हैं - कुछ भी करने में trueसफल नहीं होता है, और 0 के साथ बाहर निकलता है, जबकि falseकुछ भी करने की कोशिश नहीं करता है और "विफल" होता है, 1 के साथ बाहर निकलता है । लगता है, लेकिन यह स्क्रिप्टिंग के लिए बहुत उपयोगी है।
के रूप में कैसे चारों ओर से सत्यता पारित करने के लिए, यह आप पर निर्भर है। यह सत्य और उपयोग के लिए सिर्फ "y" या "हां" का उपयोग करने के लिए काफी सामान्य है if [ x"$variable" = x"yes" ](डमी स्ट्रिंग को जोड़ दिया xक्योंकि यदि $variableशून्य लंबाई होती है, तो यह एक फर्जी कमांड बनाने से बचाता है if [ = "yes" ]जो पार्स नहीं करता है)। यह केवल झूठे के लिए एक खाली स्ट्रिंग का उपयोग करने के लिए उपयोगी हो सकता है, और [ -z "$variable ]यह परीक्षण करने के लिए उपयोग कर सकता है कि क्या यह शून्य-लंबाई है (या -nइसके लिए गैर-अक्षीय होना है)।
वैसे भी, यह वास्तव में बूलियन मूल्यों के आसपास से गुजरने के लिए काफी दुर्लभ है bash- यह बस exitविफलता पर बहुत अधिक सामान्य है , या एक उपयोगी परिणाम लौटाता है (या शून्य अगर कुछ गलत हो जाता है, और खाली स्ट्रिंग के लिए परीक्षण), और अधिकांश मामलों में कर सकते हैं एग्जिट स्टेटस से सीधे फेल होने का टेस्ट।
आपके मामले में, आप एक ऐसा फ़ंक्शन चाहते हैं जो किसी अन्य कमांड के रूप में कार्य करेगा (इसलिए, सफलता पर 0 लौटाएं), इसलिए आपका अंतिम विकल्प सही विकल्प लगता है।
साथ ही, आपको returnकथन की आवश्यकता भी नहीं हो सकती है । यदि फ़ंक्शन पर्याप्त सरल है, तो आप इस तथ्य का उपयोग कर सकते हैं कि यह फ़ंक्शन में अंतिम निष्पादित कमांड की स्थिति देता है। तो आपका कार्य बस हो सकता है
drive_xyz_available() {
[ -e /dev/disk/by-uuid/whatever ]
}
यदि आप डिवाइस नोड के अस्तित्व के लिए परीक्षण कर रहे हैं (या /proc/mountsयह जांचने के लिए कि क्या यह माउंट है?)।
help true ; help false ; help exit