until Loop का उपयोग
In this page:
until [ condition ]; do
commands
done
Basic until Loop
until condition; do ... done body को बार-बार चलाता है जब तक condition false (non-zero exit status) evaluate हो, पहली बार true होने पर रुकते हुए। यह 'इसे तब तक करो जब तक कोई goal reach न हो जाए' के लिए naturally पढ़ता है।
उदाहरण: Basic until Loop
#!/bin/bash
count=1
until [ "$count" -gt 5 ]; do
echo "Count is $count"
count=$((count + 1))
done
echo "Stopped once count exceeded 5"
Login to try C/C++/Java/PHP code in the editor
until vs while ! condition
until condition और while ! condition एक simple command-based condition के लिए वही looping behavior produce करते हैं, क्योंकि until essentially test के sense को invert किया हुआ while है।
दोनों में choose करना सिर्फ इस बात का मामला है कि situation के लिए कौन सा ज़्यादा clearly पढ़ता है।
उदाहरण: until vs while ! condition
#!/bin/bash
n=0
until [ "$n" -ge 3 ]; do
echo "until: n=$n"
n=$((n + 1))
done
n=0
while ! [ "$n" -ge 3 ]; do
echo "while!: n=$n"
n=$((n + 1))
done
Login to try C/C++/Java/PHP code in the editor
Polling-Style Retry with until
until का एक आम real उपयोग है एक operation को retry करना जब तक वह succeed न हो जाए (या maximum attempts reach न हो जाएं), जो 'success तक keep retrying' के रूप में पढ़ता है।
अगर condition कभी actually true न हो तो हमेशा के लिए loop करने से बचने के लिए इसे एक counter के साथ combine करें।
उदाहरण: Polling-Style Retry with until
#!/bin/bash
attempt=0
succeeded=false
until [ "$succeeded" = true ] || [ "$attempt" -ge 3 ]; do
attempt=$((attempt + 1))
echo "Trying operation, attempt $attempt"
if [ "$attempt" -eq 2 ]; then
succeeded=true
fi
done
if [ "$succeeded" = true ]; then
echo "Succeeded on attempt $attempt"
else
echo "Gave up after $attempt attempts"
fi
Login to try C/C++/Java/PHP code in the editor
Condition That Starts True Skips the Body
चूंकि until अपनी condition को बहुत पहले iteration से पहले check करता है, अगर वह condition पहले से true हो, तो loop body कभी एक बार भी नहीं चलती। Bash में कोई built-in do-while/do-until construct नहीं है जो कम से कम एक execution की गारंटी दे -- वह pattern ज़रूरत पड़े तो manually simulate किया जाना चाहिए।
उदाहरण: Condition That Starts True Skips the Body
#!/bin/bash
already_done=true
until [ "$already_done" = true ]; do
echo "This line never prints"
done
echo "Loop body was skipped because the condition started true"
Login to try C/C++/Java/PHP code in the editor
untilकोwhile !के साथ confuse करना; वे simple conditions के लिए logically equivalent हैं, लेकिनuntilज़्यादा naturally पढ़ता है जब आप 'X होने तक keep going' express कर रहे हों, 'not X के दौरान keep going' नहीं।- यह भूल जाना कि,
whileकी तरह, condition हर iteration से पहले फिर से check होती है -- सिर्फ शुरुआत में एक बार नहीं। - एक
untilcondition लिखना जो शुरुआत में ही true हो, जिससे loop body बिल्कुल कभी execute न हो, जो यह उम्मीद करने वाले लोगों को surprise करता है कि कम से कम एक run होगा (Bash में कोई built-in do-until construct नहीं है)।
- Syntax:
until condition; do ... done-- body को तब तक चलाता है जब तकconditionfalse हो, true होने पर रुकते हुए। until conditionवैसा ही behave करता है जैसेwhile ! condition(command exit-status conditions के लिए)।- अगर condition पहले check से पहले ही true हो, तो body बिल्कुल नहीं चलती -- कोई built-in do-until नहीं है।
untilअक्सर polling-style logic के लिए चुना जाता है: 'यह succeed होने तक keep trying'।
Chapter Quiz — Complete all 14 topics to unlock
0/14 topics done
Complete these topics first: