[ "$1" = "" ]
और [ -z "$1" ]
बाश और अन्य POSIX- आज्ञाकारी गोले में बिल्कुल समान हैं। (ध्यान दें कि कोष्ठक के प्रत्येक तरफ एक स्थान होना चाहिए, जब तक कि एक गैर-शब्द-घटक चरित्र न हो ;
।)
[
कोई अन्य की तरह निर्मित शेल है; वास्तव में इसे वर्तनी भी कहा जा सकता है test
(दोनों के बीच एकमात्र अंतर यह है कि अंतिम तर्क के रूप में [
आवश्यक है ]
)। तो अगर आप को चलाने के [ "$1" = "" ]
साथ $1
करने के लिए विस्तार हो -z
:, परीक्षण ऑपरेटर तीन तर्कों को देखता है -z
, =
और खाली स्ट्रिंग। कुछ पुराने बॉर्न शेल ने कभी-कभी पार्स त्रुटियों को फेंक दिया जब एक ऑपरेटर इस तरह से एक ऑपरेटर की तरह दिखता था, भले ही पूर्ण अभिव्यक्ति में कोई अस्पष्टता न हो। मुझे नहीं पता कि किसी भी संस्करण ने वास्तव में इस विशेष अभिव्यक्ति के साथ परेशानी की है, लेकिन अधिक जटिल अभिव्यक्तियां उन्हें फेंक सकती हैं। ऐसे संस्करण भी हो सकते हैं जिन्हें खाली शब्दों से परेशानी थी; ये भी समर्थन नहीं किया होगा [ -z "$1" ]
। एक सामान्य शैल मुहावरा है[ x"$1" = x"" ]
। यह ऑपरेटर के रूप में संचालित ऑपरेंड होने के किसी भी जोखिम से बचता है क्योंकि कोई भी ऑपरेटर एक पत्र से शुरू नहीं होता है।
Ksh, बैश और zsh में, आप, डबल ब्रैकेट सिंटैक्स का उपयोग कर सकते हैं [[ -z $1 ]]
। यह नया सिंटैक्स (यह 1970 के दशक के उत्तरार्ध के अंत से 1980 के दशक का है) एक साधारण अंतर्निर्मित के बजाय एक विशेष सिंटैक्टिक निर्माण का उपयोग करके ऑपरेटर्स के रूप में संचालित होने के जोखिम को समाप्त करता है। ऑपरेटरों को शाब्दिक रूप से प्रकट होना चाहिए, डबल कोष्ठक के भीतर निर्विवाद, और आपको दोहरे चर चर विस्तार की आवश्यकता नहीं है।