true
बॉर्न शेल में नहीं बनाया गया था। :
हमेशा था (यह #
शुरू करने से पहले टिप्पणी दर्ज करने का तरीका था)।
यह, और क्योंकि यह टाइप करने के लिए छोटा है, शायद लोगों द्वारा पसंद किए :
जाने का मुख्य कारण है true
।
POSIX गोले में एक और अंतर नोट करें ( bash
केवल POSIX मोड में): जबकि true
एक नियमित रूप से बिलिन है (बिल्ट भी नहीं है), :
एक विशेष बिलिन है। इसके कुछ निहितार्थ हैं, जिनमें से अधिकांश के इस विशेष मामले में कोई प्रभाव होने की संभावना नहीं है:
यदि कोई :
आदेश विफल हो जाता है, जिसमें एक असफल पुनर्निर्देशन शामिल है, जो शेल से बाहर निकलने का कारण बनता है। व्यवहार में, जब तक आप पुनर्निर्देशन पास नहीं करते हैं, तब तक शायद इससे कोई फर्क नहीं पड़ेगा:
$ sh -c ': > / ; echo HERE'
sh: 1: cannot create /: Is a directory
$ sh -c 'true > /; echo HERE'
sh: 1: cannot create /: Is a directory
HERE
में var=value :
, रिटर्न के बाद var
सेट किया value
गया :
है, के मामले में नहीं true
:
$ var=1; var=2 : ; echo "$var"
2
$ var=1; var=2 true; echo "$var"
1
यह भी ध्यान रखें कि || true
के गोले में काम करता है rc
और csh
परिवारों लेकिन नहीं || :
(लेकिन रद्द करने के लिए नहीं set -e
में csh
)।
|| :
के रूप में ही नहीं है :
। इसका अर्थ है या :
अन्यथा अन्यथा (यदि पूर्ववर्ती पाइपलाइन विफल हो जाए)।
set -e
false
शेल को बाहर निकलने का कारण होगा set -e
और false
गैर-शून्य (विफलता) निकास स्थिति है। set -e
प्रभाव से रद्द कर दिया गया है, तो आदेश है कि रिटर्न एक गैर शून्य से बाहर निकलें स्थिति एक के रूप में प्रयोग किया जाता है हालत में की तरह:
if false; then ...
while false; do ...
false && : ...
false || : ...
false && :
केवल कैंसिल set -e
। false || :
रद्द करने set -e
और बाहर निकलने की स्थिति सेट करने के 0
लिए यह कहना अधिक मुहावरेदार है कि हम कमांड के विफलता निकास कोड को अनदेखा करना चाहते हैं। अधिकांश का तर्क होगा कि || true
अधिक सुपाठ्य है (इरादे को और अधिक स्पष्ट रूप से बताता है)।
||:
(बिना स्थान के) भी बाश में मान्य है। यह वही काम करता है जो|| :
या|| true
।