हाँ यहाँ एक समान सूत्र है: जांचें कि "सेट-ओ संज्ञा सेट" का उपयोग करते समय कोई चर बैश में सेट है या नहीं

हालांकि इतने सारे अलग-अलग उत्तर हैं कि यह विशेष रूप से स्पष्ट नहीं है।

यदि कोई चर सेट है और खाली नहीं है, तो क्या परीक्षण के लिए निम्नलिखित पर्याप्त होंगे?

#!/bin/bash 
set -o nounset

if [[ ! -z "${EXAMPLE-}" ]]; then
    echo "Variable is defined and is not empty..."
fi
1
Chris Stryczynski 22 नवम्बर 2017, 17:43

2 जवाब

सबसे बढ़िया उत्तर

हां, [[ ! -z "${EXAMPLE-}" ]] सुरक्षित रूप से निर्धारित करता है कि EXAMPLE नाम के वैरिएबल में एक गैर-रिक्त मान असाइन किया गया है, भले ही set -u सक्रिय हो।

व्यक्तिगत रूप से, मैं [[ -n "${EXAMPLE-}" ]] या यहां तक ​​कि [[ ${EXAMPLE-} ]] लिखूंगा - [[ ]] द्वारा सुरक्षित बनाए गए अतिरिक्त संक्षिप्तता का लाभ उठाते हुए और [ ] के साथ भरोसेमंद नहीं - लेकिन ये सभी सही हैं।

5
Charles Duffy 22 नवम्बर 2017, 17:52

आप -v ऑपरेटर का उपयोग यह जांचने के लिए कर सकते हैं कि कोई नाम किसी मान पर सेट किया गया है या नहीं:

if [[ -v EXAMPLE ]]; then
    echo "Safe to expand: $EXAMPLE"
fi
2
chepner 22 नवम्बर 2017, 18:02