Πώς να γράψετε Bash WHILE-Loops

Εντολές, σύνταξη και παραδείγματα

Μπορείτε να εκτελέσετε μια ακολουθία εντολών, γράφοντάς τα σε ένα αρχείο δέσμης ενεργειών και στη συνέχεια εκτελώντας το.

Ένα αρχείο δέσμης ενεργειών είναι απλά ένα αρχείο κειμένου, συνήθως με την επέκταση του αρχείου .SH, που περιέχει μια ακολουθία οδηγιών που θα μπορούσαν επίσης να εκτελεστούν από τη γραμμή εντολών ( κέλυφος ).

Ενώ Παραδείγματα βρόχου

Παρακάτω είναι ένα παράδειγμα βρόχου. Όταν εκτελείται, αυτό το αρχείο δέσμης ενεργειών θα εκτυπώσει τους αριθμούς 1 έως 9 στην οθόνη. Η εντολή while-time σας δίνει μεγαλύτερη ευελιξία για τον καθορισμό της συνθήκης τερματισμού από το for-loop .

#! / bin / count count = 1 ενώ το [$ count -le 9] κάνει echo "count count" ύπνος 1 ((count ++)) done

Για παράδειγμα, μπορείτε να κάνετε το προηγούμενο σενάριο έναν άπειρο βρόχο παραλείποντας τη δήλωση αύξησης "((count ++))":

#! / bin / count count = 1 ενώ το [$ count -le 9] κάνει echo "count" sleep 1 γίνεται

Η δήλωση "ύπνου 1" διακόπτει την εκτέλεση για 1 δευτερόλεπτο σε κάθε επανάληψη. Χρησιμοποιήστε τη συντόμευση πληκτρολογίου Ctrl + C για να τερματίσετε τη διαδικασία.

Μπορείτε επίσης να δημιουργήσετε ένα άπειρο βρόχο τοποθετώντας ένα παχύ έντερο ως προϋπόθεση:

#! / bin / count count = 1 ενώ: κάνουμε echo "count" sleep 1 ((count ++)) γίνει

Για να χρησιμοποιήσετε πολλαπλές συνθήκες στο while-loop, πρέπει να χρησιμοποιήσετε τη συμβολική συμβολοσειρά διπλού τετράγωνου βραχίονα:

count = 1 done = 0 ενώ το [$ count -le 9] && [$ done == 0]] κάνει echo "count" ύπνος 1 ((count ++)) αν [$ count == 5]; στη συνέχεια $ done = 1 fi

Σε αυτή τη δέσμη ενεργειών, η μεταβλητή "done" αρχικοποιείται σε 0 και στη συνέχεια ρυθμίζεται στο 1 όταν η μέτρηση φτάσει 5. Η κατάσταση του βρόχου δηλώνει ότι ο βρόχος while θα συνεχίσει όσο το "count" είναι μικρότερο από εννέα και το "done" είναι ίσο στο μηδέν. Επομένως οι βρόχοι εξέρχονται όταν ο αριθμός είναι 5.

Το "&&" σημαίνει λογικό "και" και "||" σημαίνει λογική "ή".

Μια εναλλακτική σημείωση για τις συζεύξεις "και" και "ή" σε συνθήκες είναι "-α" και "-ο" με αγκύλες. Η παραπάνω προϋπόθεση:

[[$ count -le 9] && [$ done == 0]]

... θα μπορούσε να ξαναγραφεί ως εξής:

[$ count -le 9] -α [$ done == 0]

Η ανάγνωση ενός αρχείου κειμένου συνήθως πραγματοποιείται με ένα βρόχο while. Στο ακόλουθο παράδειγμα, η δέσμη ενεργειών bash διαβάζει τη γραμμή περιεχομένων κατά γραμμή ενός αρχείου που ονομάζεται "inventory.txt:"

FILE = inventory.txt exec 6

Η πρώτη γραμμή ορίζει το όνομα του αρχείου εισόδου στη μεταβλητή "ΑΡΧΕΙΟ". Η δεύτερη γραμμή αποθηκεύει την "τυπική είσοδο" στον περιγραφέα αρχείου "6" (μπορεί να είναι οποιαδήποτε τιμή μεταξύ 3 και 9). Αυτό γίνεται έτσι ώστε η "τυπική είσοδος" να μπορεί να αποκατασταθεί στον περιγραφέα αρχείου "0" στο τέλος της δέσμης ενεργειών (δείτε τη δήλωση "exec 0 Στην 3η γραμμή το αρχείο εισόδου έχει εκχωρηθεί στον περιγραφέα αρχείου" 0 " για την τυπική εισαγωγή.Η δήλωση "read" διαβάζει τότε μια γραμμή από το αρχείο σε κάθε επανάληψη και την εκχωρεί στη μεταβλητή "line1".

Για να βγείτε πρόωρα από ένα βρόχο while, μπορείτε να χρησιμοποιήσετε τη δήλωση break όπως αυτή:

count = 1 done = 0 ενώ το [$ count -le 9] κάνει echo "count" sleep 1 ((count ++)) αν [$ count == 5]

Η εντολή break παραβλέπει την εκτέλεση του προγράμματος μέχρι το τέλος ενώ βρόχος και εκτελεί τις δηλώσεις που ακολουθούν. Σε αυτή την περίπτωση, η δήλωση "echo Finished."

Η εντολή continue, από την άλλη πλευρά, παραλείπει μόνο την υπόλοιπη εντολή βρόχου while της τρέχουσας επανάληψης και μεταβαίνει απευθείας στην επόμενη επανάληψη:

count = 1 done = 0 ενώ το [$ count -le 9] κάνει ύπνο 1 ((count ++)) εάν [$ count == 5] συνεχίσει να echo "$ count"

Σε αυτή την περίπτωση, η δήλωση "συνέχεια" εκτελείται όταν η μεταβλητή "count" φτάσει 5. Αυτό σημαίνει ότι η επακόλουθη πρόταση (echo "$ count") δεν εκτελείται σε αυτή την επανάληψη (όταν η τιμή του "count" είναι 5).