शैल स्क्रिप्ट में तुलना कैसे करें?शैल स्क्रिप्ट में तुलना कैसे करें?
या, निम्न स्क्रिप्ट क्यों कुछ प्रिंट नहीं करती है?
x=1
if[ $x = 1 ] then echo "ok" else echo "no" fi
शैल स्क्रिप्ट में तुलना कैसे करें?शैल स्क्रिप्ट में तुलना कैसे करें?
या, निम्न स्क्रिप्ट क्यों कुछ प्रिंट नहीं करती है?
x=1
if[ $x = 1 ] then echo "ok" else echo "no" fi
, का उपयोग -eq
, -ne
, ... बराबरी, नहीं बराबरी के लिए, ...
x=1
if [ $x -eq 1 ]
then
echo "ok"
else
echo "no"
fi
और दूसरों के लिए, ==
नहीं =
का उपयोग करें।
-eq और; इसके बाद] यह 'बैश देता है: अप्रत्याशित टोकन के पास वाक्यविन्यास त्रुटि \ 'फिर' –
बस मेरे' == 'से' -eq' में बदलकर यह अभी भी कुछ भी प्रिंट नहीं करता है .. –
हां, वास्तव में आपको "स्पेस" "प्रत्येक के पहले और बाद में" ["... मैंने अभी एक वैध कोड संपादित किया है। –
यह भाषा पर निर्भर करता है। बैश के साथ, आप ==
ऑपरेटर का उपयोग कर सकते हैं। अन्यथा आप -eq
-lt
-gt
बराबर, निचले स्तर के लिए उपयोग कर सकते हैं।
$ x=1
$ if [ "$x" == "2" ]; then echo "yes"; else echo "no"; fi
no
संपादित करें: जोड़ा रिक्त स्थान ==
arround और और शॉर्टकट के साथ 2.
आपको "==" के आस-पास की जगहों की आवश्यकता है - '["$ x" == "2"] के साथ अपना आदेश आज़माएं और आप देखेंगे कि यह भी सच है। आपको '[" $ x "=" 1 "]' या '[$ x -eq 1]', या bash '[[$ x == 1]]' या '((x == 1)) की आवश्यकता है –
उस सुधार के लिए धन्यवाद, मैनुअल इंडेंट मुद्दा .. लेकिन [] भी काम करता है। – Aif
लघु समाधान और या के साथ परीक्षण किया:
x=1
(($x == 1)) && echo "ok" || echo "no"
प्रथम पंक्ति: ** $ x = 1 ** – Hossein
आप की जरूरत ए ; उसके बाद] और यदि कोई स्थान: 'if [$ x = 1]; फिर "ठीक" गूंजें; अन्य "गूंज" गूंजें; fi' – Sergio
@ सर्जियो यह 'बैश देता है: अप्रत्याशित टोकन के पास वाक्यविन्यास त्रुटि \ 'फिर' –