← Back to Bash Course | Chapter 4: Loops | Lesson 6 of 14

while Loop का उपयोग

एक while loop अपने body को तब तक repeat करता है जब तक एक given condition true बनी रहे, हर single pass से पहले fresh उस condition को check करते हुए।
Syntax
bash
while [ condition ]; do
  commands
done

Basic while Loop

while condition; do ... done body के हर pass से पहले condition को फिर से evaluate करता है, false होते ही रुकते हुए। Body की ज़िम्मेदारी है कि आखिरकार condition को false बनाए, आमतौर पर एक counter या state variable update करके।

उदाहरण: Basic while Loop

bash
#!/bin/bash
count=1
while [ "$count" -le 5 ]; do
    echo "Count is $count"
    count=$((count + 1))
done

Deliberate Infinite Loop with break

while true; do ... done हमेशा चलता रहता है क्योंकि true हमेशा 0 exit करता है, जो उन loops के लिए एक deliberate pattern है जिनका exit condition top पर नहीं बल्कि body के बीच में check करना आसान हो।

अंदर एक break statement तब loop को खत्म करता है जब सही moment आए।

उदाहरण: Deliberate Infinite Loop with break

bash
#!/bin/bash
attempts=0
while true; do
    attempts=$((attempts + 1))
    echo "Attempt $attempts"
    if [ "$attempts" -ge 3 ]; then
        echo "Giving up after $attempts attempts"
        break
    fi
done

while With a Numeric Condition

while अपनी condition के रूप में सीधे (( )) arithmetic comparisons के लिए उपयोग कर सकता है, जो [ ] के साथ -le/-lt से numeric loops के लिए ज़्यादा naturally पढ़ता है। Loop उसी moment रुकता है जब arithmetic expression zero (false) evaluate करे।

उदाहरण: while With a Numeric Condition

bash
#!/bin/bash
n=5
while (( n > 0 )); do
    echo "n=$n"
    (( n-- ))
done

while With a Compound Condition

बिल्कुल if की तरह, एक while loop की condition [[ ]] के साथ &&/|| उपयोग करके कई checks combine कर सकती है, loop को सिर्फ तब तक continue करने देते हुए जब तक कई चीज़ें सब true रहें।

यह उन loops के लिए उपयोगी है जिन्हें कई possible ending conditions में से पहले वाले पर रुकना चाहिए।

उदाहरण: while With a Compound Condition

bash
#!/bin/bash
count=0
found=false
while [[ $count -lt 5 && $found = false ]]; do
    count=$((count + 1))
    echo "Checking item $count"
    if [ "$count" -eq 3 ]; then
        found=true
        echo "Found it at item $count"
    fi
done
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. एक condition लिखना जो कभी false नहीं होती क्योंकि उसमें उपयोग किया गया variable loop body के अंदर कभी update नहीं होता, एक infinite loop produce करते हुए।
  2. यह मान लेना कि while condition को एक बार check करता है और फिर body हमेशा के लिए चलता रहता है; यह असल में हर iteration से पहले, पहले वाले सहित, condition को फिर से check करता है।
  3. यह भूल जाना कि एक pipe से consume करने वाला while read loop कुछ contexts में एक subshell में चलता है, मतलब loop के अंदर set किए variables बाद में visible नहीं होते -- command output पढ़ने के साथ ज़्यादा depth में covered।
चैप्टर सारांश
  • Syntax: while condition; do ... done -- condition कोई भी command/test है, हर iteration से पहले checked।
  • Loop body को आखिरकार कुछ ऐसा बदलना चाहिए जो condition को affect करे, वरना यह हमेशा चलता रहेगा।
  • while true; do ... done एक आम deliberate infinite loop है, जिसका मतलब है अंदर से break या exit से exit करना।
  • एक while loop [ ], [[ ]], (( )), या कोई भी arbitrary command अपनी condition के रूप में उपयोग कर सकता है, बिल्कुल if की तरह।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.