मेरे पास बैश वैरिएबल गहराई है और मैं परीक्षण करना चाहता हूं कि यह 0 के बराबर है या नहीं। यदि हां, तो मैं स्क्रिप्ट को निष्पादित करना बंद करना चाहता हूं। अब तक मेरे पास है:बैश स्क्रिप्टिंग - जांचें कि बैश वैरिएबल 0
zero=0;
if [ $depth -eq $zero ]; then
echo "false";
exit;
fi
दुर्भाग्य से, इस की ओर जाता है:
[: -eq: unary operator expected
कृपया, मैं कैसे मेरी स्क्रिप्ट इसे पाने के लिए संशोधित कर सकते हैं (अनुवाद की वजह से थोड़ा गलत हो सकता है) काम कर रहे?
मैं एक कार्यक्रम से एक परिणाम के रूप में गहराई हो रही है की तरह तुलना ऑपरेटरों का उपयोग कर सकते हैं। मैंने इसे गूंजने की कोशिश की और आउटपुट में कुछ भी नहीं था। हालांकि, जब मैं [[]] का उपयोग करता हूं [जेएसके डोमिनियाक ने सुझाव दिया है, स्क्रिप्ट सही तरीके से काम करती है (वैरिएबल वास्तव में अनसेट होने पर काफी अजीब बात है)। मुझे यह मानना है कि मैं वास्तव में समझ नहीं पा रहा हूं कि क्या हो रहा है ... – Perlnika
आपकी गहराई चर सेट नहीं है। इसका मतलब है कि बैश एक अभिव्यक्ति देखता है जो कहता है '[-eq 0]; तब 'जो इसे समझ में नहीं आता है। '[[]] 'सुरक्षित संस्करण है जो बैश को इसे [[null -eq 0]] के रूप में देखता है जो सही है। – cyon
जांच करने का एक सुरक्षित तरीका दोनों पक्षों को डबल कोट्स में संलग्न करना है, यानी 'अगर ["$ गहराई" -ईक "0"] '; इस तरह, एक अनसेट चर ('$ गहराई') का मूल्यांकन" "(जो निश्चित रूप से शून्य के बराबर नहीं है) –