वाक्य रचना है:
while
first list of commands
do
second list of commands
done
जो लूप में कमांड्स की दूसरी सूची को चलाता है जब तक कि कमांड्स की पहली सूची (इसलिए उस सूची में अंतिम रन) सफल होती है।
आदेशों की उस पहली सूची में , आप [विभिन्न प्रकार के परीक्षण करने के लिए कमांड का उपयोग कर सकते हैं , या आप :अशक्त कमांड का उपयोग कर सकते हैं जो कुछ भी नहीं करता है और सफलता, या कोई अन्य आदेश लौटाता है।
while :; do cmd; done
cmdहमेशा की तरह और अधिक से अधिक रन :हमेशा सफलता देता है। वह हमेशा के लिए पाश है। आप trueइसे अधिक सुपाठ्य बनाने के बजाय आदेश का उपयोग कर सकते हैं :
while true; do cmd; done
लोग पसंद करते थे :जैसा :कि हमेशा बनाया गया था, जबकि true(बहुत समय पहले नहीं था, ज्यादातर गोले trueआजकल बनते हैं) was।
अन्य संस्करण जिन्हें आप देख सकते हैं:
while [ 1 ]; do cmd; done
ऊपर, हम [कमांड का परीक्षण करने के लिए कह रहे हैं कि क्या "1" स्ट्रिंग गैर-रिक्त है (इसलिए हमेशा सच है)
while ((1)); do cmd; done
C की ((...))नकल करने के लिए कोर्न / बैश / zsh सिंटैक्स का उपयोग करना while(1) { ...; }।
या अधिक घुमावदार लोगों की तरह until false; do cmd; done, until ! true...
जिन्हें कभी-कभी इस तरह से अलियास किया जाता है:
alias forever='while :; do'
तो आप कुछ ऐसा कर सकते हैं:
forever cmd; done
कुछ लोगों को पता चलता है कि हालत आदेशों की एक सूची है। उदाहरण के लिए, आप लोग लिखते हैं:
while :; do
cmd1
cmd2 || break
cmd3
done
जब वे लिख सकते थे:
while
cmd1
cmd2
do
cmd3
done
यह एक सूची होने के लिए समझ में आता है क्योंकि आप अक्सर ऐसी चीज़ों को करना चाहते हैं while cmd1 && cmd2; do...; doneजो कमांड सूचियाँ भी हैं।
किसी भी स्थिति में, ध्यान दें कि [यह किसी भी अन्य की तरह एक कमांड है (हालांकि यह आधुनिक बॉर्न-जैसे गोले में निर्मित है), इसका उपयोग केवल if/ while/ untilहालत सूचियों में नहीं किया जाना है , और उन शर्त सूचियों में नहीं है किसी भी अन्य कमांड से अधिक उस कमांड का उपयोग करने के लिए।
Ign :भी छोटा है और तर्कों को स्वीकार करता है (जो इसे अनदेखा करता है)। जबकि के व्यवहार trueया falseअनिर्दिष्ट यदि आप इसे किसी भी तर्क से पारित है। इसलिए एक उदाहरण के लिए कर सकते हैं:
while : you wait; do
something
done
लेकिन, का व्यवहार:
until false is true; do
something
done
अनिर्दिष्ट है (हालांकि यह अधिकांश शेल / falseकार्यान्वयन में काम करेगा )।
:कुछ भी नहीं करता है लेकिन हमेशा रिटर्न कोड के साथ बाहर निकलता है। 0. तो, यह वही थाwhile true(यह मानते हुए कि आपके सिस्टम में एकtrueनिष्पादन योग्य है)।