FOR loops & WHILE statements

Bash Scripting परिचय

Alex Scriven

Data Scientist

Basic FOR Loop structure

Python:

for x in range(3):
    print(x)
0
1
2

R:

for (x in seq(3)){
    print(x)
}
[1] 1
[1] 2
[1] 3
Bash Scripting परिचय

Bash में FOR लूप

Bash में बेसिक स्ट्रक्चर काफ़ी मिलता-जुलता है:

for x in 1 2 3

do echo $x done
1
2
3
Bash Scripting परिचय

FOR लूप नंबर रेंजेस

Bash में नंबर रेंज बनाने का आसान तरीका 'brace expansion' है:

  • {START..STOP..INCREMENT}
for x in {1..5..2}

do echo $x done
1
3
5
Bash Scripting परिचय

FOR लूप three expression सिंटैक्स

FOR लूप लिखने का एक और सामान्य तरीका 'three expression' सिंटैक्स है.

  • तीनों expressions को double parentheses में रखें
  • पहला भाग start expression है (x=2)
  • बीच का भाग terminating condition है (x<=4)
  • आख़िरी भाग increment (या decrement) expression है (x+=2)

 

 

for ((x=2;x<=4;x+=2))
do 
    echo $x
done
2
4
Bash Scripting परिचय

Glob expansions

Bash में * symbol के साथ pattern-matching expansions भी for लूप में हो सकते हैं, जैसे किसी directory की files.

उदाहरण के लिए, मान लीजिए फ़ोल्डर /books में दो text documents हैं:

for book in books/*
do  
    echo $book
done
books/book1.txt
books/book2.txt
Bash Scripting परिचय

Shell-within-a-shell दोबारा

याद है $() notation से shell-within-a-shell बनाना?

इसे आप for लूप में in-place भी बुला सकते हैं!

मान लीजिए फ़ोल्डर स्ट्रक्चर ऐसा है:

books directory की संरचना

Bash Scripting परिचय

Shell-within-a-shell से FOR लूप

हम shell-within-a-shell के आउटपुट पर लूप चला सकते हैं:

for book in $(ls books/ | grep -i 'air')

do echo $book done
AirportBook.txt
FairMarketBook.txt
Bash Scripting परिचय

WHILE स्टेटमेंट सिंटैक्स

FOR लूप जैसा ही, पर इसमें हर iteration पर एक condition जाँची जाती है.

जब तक condition सही है, iterations चलते हैं!

  • for की जगह while लिखें
  • condition को square brackets में रखें
    • संख्यात्मक तुलना के लिए IF statements वाले ही flags इस्तेमाल करें (जैसे -le)
  • कई conditions को chain कर सकते हैं या double-brackets और && (AND) या || (OR) का उपयोग करें, जैसे 'IF' statements में
  • कोड के अंदर ऐसा बदलाव ज़रूर करें जो लूप रोक दे (वरना infinite loop हो सकता है!)
Bash Scripting परिचय

WHILE स्टेटमेंट उदाहरण

एक सरल उदाहरण:

x=1

while [ $x -le 3 ];
do echo $x ((x+=1)) done
1
2
3
Bash Scripting परिचय

Infinite लूप से सावधान

अगर break condition कभी पूरी न हो, तो infinite WHILE लूप से सावधान रहें.

x=1
while [ $x -le 3 ]; 
do
    echo $x
    # x को increment न करें. यह कभी 3 तक नहीं पहुँचेगा!
    # ((x+=1)) 
done

यह 1 को हमेशा प्रिंट करता रहेगा!

Bash Scripting परिचय

अभ्यास करते हैं!

Bash Scripting परिचय

Preparing Video For Download...