हाँ यहाँ एक समान सूत्र है: जांचें कि "सेट-ओ संज्ञा सेट" का उपयोग करते समय कोई चर बैश में सेट है या नहीं
हालांकि इतने सारे अलग-अलग उत्तर हैं कि यह विशेष रूप से स्पष्ट नहीं है।
यदि कोई चर सेट है और खाली नहीं है, तो क्या परीक्षण के लिए निम्नलिखित पर्याप्त होंगे?
#!/bin/bash
set -o nounset
if [[ ! -z "${EXAMPLE-}" ]]; then
echo "Variable is defined and is not empty..."
fi
2 जवाब
हां, [[ ! -z "${EXAMPLE-}" ]]
सुरक्षित रूप से निर्धारित करता है कि EXAMPLE
नाम के वैरिएबल में एक गैर-रिक्त मान असाइन किया गया है, भले ही set -u
सक्रिय हो।
व्यक्तिगत रूप से, मैं [[ -n "${EXAMPLE-}" ]]
या यहां तक कि [[ ${EXAMPLE-} ]]
लिखूंगा - [[ ]]
द्वारा सुरक्षित बनाए गए अतिरिक्त संक्षिप्तता का लाभ उठाते हुए और [ ]
के साथ भरोसेमंद नहीं - लेकिन ये सभी सही हैं।
आप -v
ऑपरेटर का उपयोग यह जांचने के लिए कर सकते हैं कि कोई नाम किसी मान पर सेट किया गया है या नहीं:
if [[ -v EXAMPLE ]]; then
echo "Safe to expand: $EXAMPLE"
fi
संबंधित सवाल
नए सवाल
bash
बैश कमांड शेल के लिए लिखी गई लिपियों के बारे में प्रश्नों के लिए। त्रुटियों / वाक्यविन्यास त्रुटियों के साथ शेल स्क्रिप्ट के लिए, कृपया यहां पोस्ट करने से पहले शेलचेक प्रोग्राम (या वेब शेलचेक सर्वर पर https://shellcheck.net) के साथ उन्हें जांचें। बैश के इंटरैक्टिव उपयोग के बारे में सवाल स्टैक ओवरफ्लो की तुलना में सुपर उपयोगकर्ता पर ऑन-टॉपिक होने की अधिक संभावना है।