Βρόχος Bash 'Until': Εκμάθηση και Παραδείγματα

Χρησιμοποιώντας τον βρόχο «μέχρι» σε ένα σενάριο Bash για να κάνετε βρόχο πάνω από εντολές.

Το Bash (Bourne Again Shell) είναι μια γραμμή εντολών και μια γλώσσα δέσμης ενεργειών σε λειτουργικά συστήματα GNU/Linux. Είναι το προεπιλεγμένο κέλυφος για τις περισσότερες διανομές Linux.

Όπως οι περισσότερες γλώσσες δέσμης ενεργειών, το Bash παρέχει συντάξεις βρόχου για να επαναλάβετε παρόμοιες εργασίες πολλές φορές. Σε αυτό το άρθρο, θα μάθουμε πώς να το χρησιμοποιούμε μέχρι βρόχος στο Bash.

Εισαγωγή

ο μέχρι Ο βρόχος στο Bash χρησιμοποιείται για την εκτέλεση εντολών (εκτελεσμένων εντολών) πολλές φορές με βάση την έξοδο άλλης εντολής (εντολές συνθήκης). Οι εντολές που εκτελούνται θα συνεχίσουν να εκτελούνται έως ότου η εντολή συνθήκης συνεχίσει να αποτυγχάνει (δηλαδή, επιστρέφει μια μη μηδενική κατάσταση. Οποιαδήποτε εντολή στο Linux επιστρέφει 0 για επιτυχία και μη μηδενικό ακέραιο για αποτυχία). Αυτό είναι ακριβώς το αντίθετο ενώ βρόχο, στον οποίο οι εντολές που εκτελούνται συνεχίζουν να εκτελούνται έως ότου η εντολή συνθήκης είναι επιτυχής.

Εάν υπάρχουν πολλές εντολές συνθήκης, η δήλωση λαμβάνει υπόψη μόνο την κατάσταση της τελευταίας εντολής στη λίστα, δηλαδή, ο βρόχος θα εκτελείται έως ότου η τελευταία εντολή στη λίστα συνεχίσει να αποτυγχάνει.

Γενική Σύνταξη

Η γενική σύνταξη για μέχρι Ο βρόχος στο Bash είναι:

μέχρι να γίνει

Η λίστα εντολών εκτέλεσης θα εκτελείται μέχρι να αποτύχει η τελευταία εντολή στη λίστα εντολών συνθήκης. Μόλις η τελευταία εντολή είναι επιτυχής, ο βρόχος εξέρχεται.

Οι χρήστες μπορούν να καθορίσουν οποιοδήποτε εκτελέσιμο αρχείο στις λίστες εντολών. Μπορεί να είναι τυπικά προγράμματα Linux ή προσαρμοσμένα προγράμματα χρήστη ή σενάρια. Κάθε εντολή θα πρέπει να βρίσκεται είτε σε μια νέα γραμμή είτε να χωρίζεται με ένα ερωτηματικό στην ίδια γραμμή.

Ας δούμε λίγα παραδείγματα.

Ο βρόχος έως ότου μια μεταβλητή έχει μια συγκεκριμένη τιμή: Ο παρακάτω βρόχος εκτελείται μέχρι την τιμή της μεταβλητής Χ είναι 10.

x=0 έως ότου [[ $x -eq 10 ]] do echo $x ((x++)) ολοκληρωθεί

Σε κάθε επανάληψη, ελέγχουμε αν η τιμή του x είναι 10. Η τιμή ελέγχεται χρησιμοποιώντας το δοκιμή εντολή. [[ Έκφραση ]] είναι η σύνταξη για την εντολή δοκιμής (Βλ τεστ ανδρών).

Στη συνέχεια μέσα στο κάνει...έγινε μπλοκ, απλώς εκτυπώνουμε την τιμή του x και την αυξάνουμε. Ο βρόχος εξέρχεται μόλις η εντολή συνθήκης είναι επιτυχής, δηλαδή όταν $x είναι ίσο με 10.

Σημείωση: Η μεταβλητή ευρετηρίου που θα χρησιμοποιηθεί στον βρόχο «έως» πρέπει να αρχικοποιηθεί είτε πριν από τον βρόχο «έως» ή στις εντολές συνθήκης, σε αντίθεση με τον βρόχο for, που επιτρέπει την σιωπηρή προετοιμασία μιας μεταβλητής.

Με πολλαπλές εντολές συνθηκών: Ο ακόλουθος βρόχος δημιουργεί 5 καταλόγους με όνομα dir0, dir1, ... dir4.

z=0 μέχρι echo "Hi" echo "Bye" [[ $z -eq 5 ]] do echo "Creating dir$z..." mkdir dir$z ((z++)) ολοκληρωθεί

Οι πρώτες εντολές echo "Hi" και echo "Bye" θα εκτελεστούν μία φορά πλήρως. Η επιτυχία ή η αποτυχία τους δεν έχει καμία απολύτως επίδραση στο πόσο θα διαρκέσει ο βρόχος.

Στη συνέχεια θα εκτελεστεί η εντολή δοκιμής για τον έλεγχο της τιμής της μεταβλητής z. Έως ότου αυτή η εντολή συνεχίσει να αποτυγχάνει, δηλαδή έως ότου η τιμή του z είναι 5, οι εντολές συνθήκης και οι εντολές που εκτελούνται συνεχίζουν να εκτελούνται με τη σειρά. Εδώ, για κάθε επανάληψη, θα εκτελεί πρώτα τις 2 εντολές ηχούς σε κατάσταση και στη συνέχεια θα ελέγχει την εντολή 3ης συνθήκης για την τιμή του z. Αν δεν είναι 5, μπαίνει στον βρόχο και εκτελεί τις εντολές που δίνονται.

Διάλειμμα και Συνέχεια

Δήλωση διακοπής για έξοδο υπό όρους

Μπορούμε επίσης να χρησιμοποιήσουμε τη δήλωση υπό όρους αν μέσα στον βρόχο. ο αν η δήλωση μπορεί να χρησιμοποιηθεί με α Διακοπή μια δήλωση, για μια υπό όρους έξοδο από τον βρόχο.

x=0 μέχρι το [[ $x -eq 10 ]] κάντε εάν [[ $x -eq 5 ]] break fi echo $x ((x++)) ολοκληρωθεί

Το παραπάνω μέχρι βρόχος θα εκτυπώσει αριθμούς από το 0 έως το 4. Στη συνέχεια, όταν η τιμή του i είναι 5, θα βγει από τον βρόχο. Αυτό είναι ιδιαίτερα χρήσιμο όταν πρόκειται να βγείτε από έναν βρόχο όταν μια εντολή δίνει μια συγκεκριμένη έξοδο.

Συνέχεια δήλωσης για παράλειψη επανάληψης υπό όρους

Το Bash έχει επίσης ένα να συνεχίσει δήλωση για παράβλεψη του υπόλοιπου μέρους μιας επανάληψης σε έναν βρόχο εάν ικανοποιείται μια συγκεκριμένη συνθήκη.

x=0 έως ότου [[ $x -eq 10 ]] κάντε εάν [[ $x -eq 5 ]] συνεχίσετε fi echo $x ((x++)) ολοκληρωθεί

Ο παραπάνω βρόχος θα εκτυπώσει αριθμούς από το 0 έως το 10, εκτός από το 5, γιατί κατά την επανάληψη του x=5 υπάρχει μια δήλωση συνέχεια, η οποία θα παρακάμψει τον υπόλοιπο κώδικα στον βρόχο στην αρχή με την επανάληψη του x=6.

Χρήση βρόχων: Σενάρια και γραμμή εντολών

Οι συντάξεις βρόχου μπορούν να χρησιμοποιηθούν στο κέλυφος Bash απευθείας ή από ένα εκτελέσιμο αρχείο σεναρίου φλοιού. Παρόμοιο με Για και ενώ βρόχους, μια φορά ένα μέχρι Η σύνταξη βρόχου εισάγεται στο κέλυφος, το κέλυφος συνεχίζει την προτροπή για να επιτρέψει στον χρήστη να συνεχίσει τις εντολές που πρόκειται να επαναληφθούν.

Διαφορετικά, ο χρήστης μπορεί να το αποθηκεύσει σε ένα αρχείο σεναρίου και να εκτελέσει το αρχείο σεναρίου.

ο #!/bin/bash στην αρχή καθορίζει τον διερμηνέα που θα χρησιμοποιηθεί κατά την εκτέλεση του αρχείου. Αν και το Bash είναι το πιο συχνά χρησιμοποιούμενο κέλυφος στις μέρες μας, ορισμένοι χρήστες προτιμούν κοχύλια όπως zsh, το οποίο θα πρέπει να καθοριστεί στη θέση του bash στην αρχή αυτού του αρχείου.

Για να δώσετε δικαιώματα εκτέλεσης για αυτό το αρχείο, εκτελέστε:

chmod +x test.sh

Τελικά, για να εκτελέσετε το αρχείο, τρέξιμο:

./test.sh

συμπέρασμα

ο μέχρι Ο βρόχος είναι ένα άλλο σημαντικό χαρακτηριστικό στο σενάριο Bash. Έχει ιδιαίτερη σημασία στα πολύπλοκα σενάρια όταν ένα συγκεκριμένο σύνολο προγραμμάτων αναμένεται να επιστρέψει την κατάσταση αποτυχίας και να εκτελεστούν κάποιες άλλες εντολές για την καταγραφή της αποτυχίας, την εμφάνιση του σφάλματος λεπτομερώς ή απλώς την εκτέλεση ορισμένων εναλλακτικών προγραμμάτων.

Κατηγορία: Linux