मैं वर्तमान में एक बैश परीक्षण रूपरेखा लिख रहा हूं, जहां एक परीक्षण समारोह में, दोनों मानक बैश परीक्षण ( [[
) के साथ-साथ पूर्वनिर्धारित मिलानकर्ताओं का उपयोग किया जा सकता है। मैचर्स '[[' के लिए रैपर हैं और रिटर्न कोड लौटाने के अलावा, कुछ सार्थक संदेश सेट करते हैं, जो अपेक्षित था।
उदाहरण:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
इसलिए, जब एक माचिस का उपयोग किया जाता है, और यह विफल हो जाता है, तभी एक error_message सेट किया जाता है।
अब, कुछ समय बाद, मैं परीक्षण करता हूं कि क्या परीक्षण सफल हुए। यदि यह सफल हुआ, तो मैं हरे रंग में उम्मीद को प्रिंट करता हूं, अगर यह लाल रंग में विफल रहा।
इसके अलावा, एक error_message सेट हो सकता है, इसलिए मैं परीक्षण करता हूं यदि कोई संदेश मौजूद है, तो उसे प्रिंट करें, और फिर उसे अनसेट करें (क्योंकि निम्नलिखित परीक्षण सेट नहीं हो सकता है error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
अब मेरा सवाल यह है कि अगर वेरिएबल को अनसेट करना बेहतर है, या सिर्फ इसे '' जैसे सेट करना है
error_message=''
इनमे से कौन बेहतर है? क्या वास्तव में इससे कोई फर्क पड़ता है? या हो सकता है कि मेरे पास एक अतिरिक्त ध्वज होना चाहिए जो यह दर्शाता है कि संदेश सेट किया गया था?
error_message
किसी और चीज के साथ तुलना नहीं करते हैं , तो मैं कहूंगा कि इससे कोई फर्क नहीं पड़ता। हालाँकि, मुझे लगता है कि आप चाहते हैं[[ $error_message ]]
, अन्यथा आप परीक्षण कर रहे हैं कि शाब्दिक स्ट्रिंग "error_message" मौजूद है।