if
आदेश केवल आदेश आप इसे कार्यान्वित करता है, और उसके बाद ही उस आदेश 0
की एक निकास कोड देता है, if
बयान के if
भाग चलेंगे। अन्यथा, यह else
भाग (यदि वह मौजूद है) चलाएगा।इस पर
आइए नज़र:
$ rm foo.test.txt # Hope this wasn't an important file
$ if ls foo.test.txt
> then
> echo "This file exists"
> else
> echo "I can't find it anywhere.."
> fi
ls: foo.test.txt: No such file or directory
I can't find it anywhere..
if
बयान ls foo.test.txt
आदेश चलाता है और ls
आदेश एक गैर शून्य रिटर्न क्योंकि फ़ाइल मौजूद नहीं है। यह else
खंड निष्पादित करने के लिए if
कथन का कारण बनता है।
$ touch foo.test.txt # Now this file exists.
$ if ls foo.test.txt # Same "if/else" statement as above
> then
> echo "This file exists"
> else
> echo "I can't find it anywhere.."
> fi
foo.test.txt
This file exists
यहाँ, ls
आदेश एक 0
बाहर निकलें स्थिति लौटा (के बाद से फ़ाइल मौजूद है और फ़ाइल मौजूद है और ls
आदेश से stat'ed किया जा सकता है कि फिर से कोशिश करते हैं ...।
आम तौर पर, आपको फ़ाइल के परीक्षण के लिए ls
कमांड का उपयोग नहीं करना चाहिए। मैंने इसे केवल यह दिखाने के लिए उपयोग किया है कि if
कथन आदेश निष्पादित करता है, फिर उस आदेश की निकास स्थिति के आधार पर if
या else
खंड निष्पादित किया गया। आप परीक्षण करने के लिए किया जाए या नहीं एक फ़ाइल मौजूद चाहते हैं, आप ls
आदेश के बजाय test -e
आदेश का उपयोग करना चाहिए: फ़ाइल मौजूद
if test -e foo.test.txt # Same as above, but using "test" instead of "ls"
then
echo "This file exists"
else
echo "I can't find it anywhere.."
fi
हैं, तो test -e
0
की एक निकास स्थिति वापस आ जाएगी। अन्यथा, यह एक गैर-शून्य निकास स्थिति वापस कर देगा।
आप ऐसा करते हैं: 10958
inode है
$ ls -i /bin/test /bin/[
10958 /bin/[ 10958 /bin/test
है। उसी इनोड के साथ फ़ाइलें एक ही फ़ाइल के लिए दो अलग-अलग नाम हैं। इस प्रकार [
और test
कमांड नरम जुड़े हुए हैं । इसका मतलब है आप test
के बजाय [
उपयोग कर सकते हैं:
if [ -e foo.test.txt ]
then
echo "This file exists"
else
echo "I can't find it anywhere.."
fi
परिचित लग रहा है?
1. मार में, test
और [
builtin कर रहे हैं, इसलिए जब आप मार में इन आदेशों को चलाने के लिए, यह /bin/test
या /bin/[
नहीं चल रहा है। हालांकि, वे अभी भी एक दूसरे से जुड़े हुए हैं।
http://www.gnu.org/software/bash/manual/bashref.html –
'' '' test' कमांड के लिए एक छोटा नाम है। 'मैन टेस्ट' आज़माएं। – Barmar
@ बाड़मेर का मतलब है 'सहायता परीक्षण'। 'मैन टेस्ट' '/ bin/test' के लिए प्रलेखन है, और यह' test' बिल्टिन – SheetJS