Το For Loop είναι αναπόσπαστο μέρος οποιασδήποτε γλώσσας προγραμματισμού. Επιτρέπει στα προγράμματα να επαναλαμβάνονται μέσω ενός συγκεκριμένου αριθμού στοιχείων.
Για παράδειγμα, εάν θέλετε να περάσετε από μια λίστα ή μια σειρά από στοιχεία ‘n’, θα χρησιμοποιήσετε ένα βρόχο for. Ας πάρουμε ένα απλό παράδειγμα:
Πίνακας 1Violet2Indigo3Blue4GreenRainbow
Για να εκτελέσουμε οποιεσδήποτε ενέργειες ή να επαναλάβουμε τα στοιχεία στον παραπάνω πίνακα, χρειαζόμαστε έναν βρόχο For.
Πίνακας περιεχομένων
Bash For Loop
Σε ένα σενάριο bash, η σύνταξη For Loop είναι η εξής:
#!/bin/bash for VAR in 1 2 3 4 5.....N do ACTION 1 ACTION 2 ..... done
Το Bash For Loop είναι αρκετά απλό. Η πρώτη γραμμή #!/bin/bash υποδεικνύει ότι ο κώδικας είναι σενάριο bash. Το VAR σημαίνει την προσωρινή μεταβλητή που χρησιμοποιείται για βρόχο. Το N υποδεικνύει τον μέγιστο αριθμό επαναλήψεων. Το ‘do’ και το ‘done’ ξεκινούν και σταματούν το Loop, αντίστοιχα. Οι ενέργειες είναι οι εντολές που εκτελούνται εντός του βρόχου.
Μπορούμε να εκτελέσουμε το Bash For Loop με διαφορετικές μεταβλητές, όπως λίστα, συμβολοσειρές, ακέραιους αριθμούς και πίνακες. Αυτό το άρθρο θα δείξει μερικά κοινά παραδείγματα του Bash For Loop.
Μπορείτε να εκτελέσετε απευθείας αυτά τα προγράμματα στη γραμμή εντολών bash ή να τα αποθηκεύσετε σε ένα αρχείο και να εκτελέσετε το αρχείο χρησιμοποιώντας την εντολή Bash filename.sh.
Ανάγνωση στατικής λίστας
Σκεφτείτε την ακόλουθη λίστα – rainbowColorList = Βιολετί, Indigo, Μπλε, Πράσινο, Κίτρινο, Πορτοκαλί, Κόκκινο
Μπορούμε να εκτυπώσουμε την παραπάνω λίστα συμβολοσειρών χρησιμοποιώντας το Bash For Loop ως εξής:
#! /bin/sh # Define the list rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red # Comma separator pattern using //,/ for colors in ${rainbowColorList//,/ } do echo $colors done
Η έξοδος θα είναι η λίστα των στοιχείων σε μια νέα γραμμή.
#Output Violet Indigo Blue Green Yellow Orange Red
Διαβάζοντας έναν πίνακα
Η σύνταξη για τη δήλωση ενός πίνακα είναι διαφορετική. Χρησιμοποιήστε παρενθέσεις για κάθε στοιχείο (String).
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for colors in "${rainbowArray[@]}"; do echo "I like $colors" done
Το ‘@’ χρησιμοποιείται για επανάληψη σε κάθε στοιχείο του πίνακα.
#Output I like Violet I like Indigo I like Blue I like Green I like Yellow I like Orange I like Red
Μπορούμε επίσης να χρησιμοποιήσουμε τον βρόχο For για να εκτυπώσουμε τα ευρετήρια και τα στοιχεία του πίνακα.
#Printing with index rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for i in "${!rainbowArray[@]}"; do echo "Color at index " $i " : " "${rainbowArray[$i]}" i=$((i+1)); done
#Output Color at index 0 : Violet Color at index 1 : Indigo Color at index 2 : Blue Color at index 3 : Green Color at index 4 : Yellow Color at index 5 : Orange Color at index 6 : Red
Σημειώστε ότι χρησιμοποιούμε το ‘!’ στον βρόχο για να λάβετε το ευρετήριο στοιχείου.
Επαναλαμβανόμενο εύρος αριθμών
Μπορούμε να χρησιμοποιήσουμε το Bash For Loop για επανάληψη σε ένα εύρος αριθμών.
#iterating over range of numbers echo "Countdown begins..." for N in {10..0} do echo "$N" done
Το «..» υποδεικνύει μια σειρά αριθμών.
#Output 10 9 8 7 6 5 4 3 2 1 0
Μπορούμε επίσης να παραλείψουμε αριθμούς μέτρησης καθορίζοντας το εύρος.
Στο παρακάτω παράδειγμα, παραλείπουμε την καταμέτρηση κατά 3.
#iterating with skip counting echo "Countdown begins..." for N in {30..0..3} do echo "$N" done
Το παραπάνω πρόγραμμα ξεκινά με το 30 ως τον πρώτο αριθμό και μετρά αντίστροφα μέχρι το 0. Η τελευταία παράμετρος στον βρόχο for ‘3’ καθορίζει τον αριθμό μέτρησης παράλειψης.
#Output 30 27 24 21 18 15 12 9 6 3 0
Χορδές και χαρακτήρες
Μπορούμε να κάνουμε πολλές ενδιαφέρουσες λειτουργίες συμβολοσειρών με το Bash For Loop.
Για παράδειγμα, μπορούμε να διαβάσουμε κάθε χαρακτήρα μιας συμβολοσειράς χρησιμοποιώντας τον τελεστή ‘seq’ σε έναν βρόχο For:
#read characters of a string myword="welcome" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
Σημειώστε ότι το ‘seq’ πρέπει να ξεκινά με 1 για να λάβετε πρώτα τον πρώτο χαρακτήρα.
#Output W e l c o m e
Μπορούμε επίσης να εκτυπώσουμε τις συμβολοσειρές χωρισμένες με κενό διάστημα μία προς μία:
#read each word from a sentence mysentence="Welcome to grtechpc.org. One stop hub for all techies" for word in $mysentence; do echo $word done
#Output Welcome to grtechpc.org. One stop hub for all techies
Εκφράσεις
Παρόμοια με οποιαδήποτε άλλη γλώσσα προγραμματισμού όπως η Java, μπορούμε να τοποθετήσουμε εκφράσεις μέσα σε ένα Bash For Loop.
for (( var=10; var>=0; var-- )) do echo "Counting down...$var" done
#Output Counting down...10 Counting down...9 Counting down...8 Counting down...7 Counting down...6 Counting down...5 Counting down...4 Counting down...3 Counting down...2 Counting down...1 Counting down...0
Ανάγνωση επιχειρημάτων γραμμής εντολών
Για να διαβάσουμε από ορίσματα γραμμής εντολών, χρησιμοποιούμε την εντολή «ανάγνωση». Στο παρακάτω παράδειγμα, θα λάβουμε μερικούς αριθμούς από τον χρήστη και θα εκτυπώσουμε το άθροισμα χρησιμοποιώντας το Bash For Loop. Χρησιμοποιούμε τη μεταβλητή σύνολο για να αποθηκεύσουμε το ενδιάμεσο και τελικό σύνολο ή το άθροισμα των αριθμών.
read -a array -p "Enter the numbers you want to add:" total=0 for i in ${array[@]}; do let total+=$i done echo "Sum of the numbers is: $total"
Η έξοδος είναι:
#Output Enter the numbers you want to add: 3 4 66 Sum of the numbers is: 73
Εύρεση περιττών-ζυγών αριθμών
Για να βρούμε μονούς και ζυγούς αριθμούς μεταξύ 1 και 10 (ή οποιονδήποτε αριθμό N), θα πρέπει να χρησιμοποιήσουμε τη συνθήκη if μαζί με το Bash για βρόχο. Για να προσδιορίσουμε έναν άρτιο αριθμό, θα διαιρέσουμε τον αριθμό με το 2 και αν το υπόλοιπο είναι 0, τότε θα τον κατηγοριοποιήσουμε ως άρτιο άλλο περιττό.
#declare the list where the even and odd numbers will be sorted and kept evennum="" oddnum="" for (( i=1; i<=10; i++ )) do remainder=$(( $i % 2 )) if [ $remainder -eq 0 ]; then evennum="$evennum $i " else oddnum="$oddnum $i " fi done echo "Even numbers are: "$evennum echo "Odd numbers are: "$oddnum
Σημειώστε ότι δίνουμε το εύρος ως 10 στο παραπάνω παράδειγμα. Μπορούμε να αλλάξουμε αυτόν τον αριθμό για να λάβουμε άρτιους και περιττούς αριθμούς μεταξύ οποιασδήποτε περιοχής. Μπορείτε επίσης να δοκιμάσετε να διαβάσετε τον αριθμό από τον χρήστη χρησιμοποιώντας την εντολή «ανάγνωση» που μάθαμε στην προηγούμενη ενότητα.
#Output Even numbers are: 2 4 6 8 10 Odd numbers are: 1 3 5 7 9
Άπειρος βρόχος
Το Infinity ή Infinite Loop είναι ένας βρόχος που δεν σταματά να εκτελείται και το πρόγραμμα πρέπει να αναγκαστεί να σταματήσει να χρησιμοποιεί Ctrl+C. Μπορούμε εύκολα να δημιουργήσουμε έναν άπειρο βρόχο χρησιμοποιώντας το ‘; ;’ τελεστής μέσα στο βρόχο for:
for (( ; ; )) do echo "Welcome to grtechpc.org" done
#Output Welcome to grtechpc.org Welcome to grtechpc.org Welcome to grtechpc.org Welcome to grtechpc.org Welcome to grtechpc.org Welcome to grtechpc.org Welcome to grtechpc.org Welcome to grtechpc.org Welcome to grtechpc.org Welcome to grtechpc.org ^C $
Δήλωση διακοπής
Οι εντολές διακοπής χρησιμοποιούνται για να διακοπούν από τον βρόχο όταν ικανοποιείται μια συνθήκη «αν».
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then break fi echo "Searching for Green, the color now is $color" done echo "I found my color $color"
Σε αυτό το παράδειγμα, προσπαθούμε να βρούμε το πράσινο χρώμα. Ο βρόχος For-Loop περνά μέσα από κάθε χρώμα και μόλις βρεθεί το πράσινο χρώμα, το πρόγραμμα βγαίνει από τον βρόχο λόγω της εντολής break.
#Output Searching for Green, the color now is Violet Searching for Green, the color now is Indigo Searching for Green, the color now is Blue I found my color Green
Συνέχεια δήλωσης
Το Continue χρησιμοποιείται για να παραλείψετε τον τρέχοντα βρόχο και να μετακινηθείτε στον επόμενο με βάση μια συγκεκριμένη συνθήκη. Για παράδειγμα, εάν δεν θέλετε να εκτυπώσετε το χρώμα «Πράσινο» από το προηγούμενο πρόγραμμά μας, μπορούμε να βάλουμε συνέχεια και θα εμφανιστούν όλα τα άλλα χρώματα εκτός από το Πράσινο.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then continue fi echo "$color" done
#Output Violet Indigo Blue Yellow Orange Red
Τελικές Λέξεις
Καλύψαμε τις πιο συνηθισμένες χρήσεις ενός βρόχου Bash For, χρησιμοποιώντας συμβολοσειρές, ακέραιους αριθμούς, πίνακες και λίστα. Εάν μαθαίνετε Linux αλλά έχετε μηχανή Windows 10, μπορείτε να χρησιμοποιήσετε τη δυνατότητα WSL και να εγκαταστήσετε το Linux στον υπολογιστή σας με Windows.
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το τερματικό Linux με παρόμοιο τρόπο με το CMD.
Στη συνέχεια, μπορείτε να ελέγξετε πώς να εκτελέσετε σενάρια bash χρησιμοποιώντας Python;