शेल स्क्रिप्टिंग: -z और -n विकल्पों के साथ यदि


53

मेरे पास एक शेल स्क्रिप्ट है जहां हमारे पास निम्नलिखित लाइनें हैं if [ -z "$xyz" ]और if [ -n "$abc" ], लेकिन मुझे यकीन नहीं है कि उनका उद्देश्य क्या है। क्या कोई समझा सकता है?

जवाबों:


63

आप पार्टी के ऑपरेटरों के लिए एक बहुत अच्छा संदर्भ पा सकते हैं यहाँ । यदि आप एक अलग शेल का उपयोग कर रहे हैं, तो बस खोज करें <my shell> operatorsऔर आपको वह सब कुछ मिलेगा जिसकी आपको आवश्यकता है। आपके विशेष मामले में, आप उपयोग कर रहे हैं:

-n
   string is not null.

-z
  string is null, that is, has zero length

चित्रित करना:

$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null

3

man testया man [आप कमांड का परीक्षण करने के लिए सभी विकल्प देंगे। इस स्थिति में, -n यह देखने के लिए परीक्षण कर रहा है कि क्या $ abc की सामग्री में शून्य-शून्य लंबाई है और -z यह देखने के लिए परीक्षण कर रही है कि क्या $ xyz की सामग्री शून्य-लंबाई वाली स्ट्रिंग है।


आदमी [GNU बैश, संस्करण 4.1.2 (1) -release (x86_64-redhat-linux-gnu) में मेरे लिए काम नहीं करता है। लेकिन मनुष्य परीक्षण के लिए +1।
andrew lorien

1
नोट man test(हमेशा?) बाहरी-प्रोग्राम संस्करण के लिए मैन पेज देता है, जो (GNU-coreutils संस्करण के लिए कम से कम) स्पष्ट रूप से चेतावनी देता है कि कुछ (IME अधिकांश) शेल में एक अंतर्निहित संस्करण होता है जो अलग हो सकता है।
dave_thompson_085
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.