|
Μέρος δεύτερο από αυτό μίνι φροντιστήριο προγραμματισμός σε Bash, όπου μαθαίνουμε να χρησιμοποιούμε ciclos και άλλα εργαλεία που θα μας βοηθήσουν να βελτιώσουμε τις λειτουργίες μας Εφαρμογές. |
Το αν υπό όρους
Η λειτουργία του If είναι να εφαρμόσει ένα φίλτρο και να εκτελέσει μια λειτουργία ή εργασία για κάθε τύπο φίλτρου που εφαρμόζεται. Η δομή του έχει ως εξής:
Εάν [συνθήκη]; τότε elif εντολές [συνθήκη]? τότε άλλες εντολές? εντολές fi
Ένα παράδειγμα εμφανίζεται δίπλα στον βρόχο For στην αντίστοιχη ενότητα του.
Κύκλοι
1. Ενώ: θα εκτελέσει όλες τις εντολές που καθορίζονται μεταξύ του do και του, αρκεί να ισχύει η συνθήκη. Εάν θέλουμε να μεταβιβάσουμε τους τελεστές σύγκρισης σε αυτήν, η έκφραση πρέπει να είναι σε παρένθεση.
ενώ το CONDITION / COMMAND κάνει εντολές
Παράδειγμα: Πίνακας πολλαπλασιασμού ενός αριθμού
#! / bin / bash X = 1 echo "Εισαγάγετε έναν αριθμό και πατήστε ENTER" διαβάστε M # Ο βρόχος ελέγχει ότι το X είναι μικρότερο ή ίσο με 10 ενώ [$ X –le 10] do #In R αποθηκεύουμε τον πολλαπλασιασμό του X με MR = $ [X * M] # Αυτός ο πολλαπλασιασμός εκτυπώνεται στην ηχώ της οθόνης "$ M * $ X = $ R" #Με αφήσουμε, αυξάνουμε την τιμή του Χ κατά 1 μονάδα αφήστε το X = $ X + 1 να γίνει
2. Για: αποθηκεύει μια λίστα στοιχείων σε μια μεταβλητή, η οποία θα χρησιμοποιηθεί για την εκτέλεση συγκεκριμένων λειτουργιών σε κάθε κύκλο.
για VARIABLE σε ELEMENTS κάνουμε εντολές
Παράδειγμα: πρόγραμμα που αντιγράφει ένα αρχείο από έναν φάκελο στον άλλο, αντικαθιστώντας ένα παλιό αρχείο.
# / bin / bash # Δημιουργούμε καταλόγους προέλευσης και προορισμού ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Τοποθετούμε τον εαυτό μας στην πηγή cd $ ORIGIN # Από όλα τα αρχεία, θέλουμε μόνο αυτό που είναι # καλέστε FILE για FILE στο * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f μας φιλτράρει κανονικά αρχεία, καθώς οι κατάλογοι δεν είναι τίποτα καλό για εμάς. –Δεν φιλτράρει # αρχεία «νεότερα» από αυτά που βρίσκονται στον φάκελο προορισμού εάν [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; στη συνέχεια ηχώ "Αντιγραφή $ FILE ..." # αντιγράφουμε το αρχείο με cp cp $ FILE $ ARCH-DESTINATION fi fi #We cd για έξοδο από τον πηγαίο φάκελο cd
Ένα άλλο παράδειγμα: σενάριο όπου ο χρήστης πρέπει να μαντέψει έναν τυχαίο αριθμό που δημιουργείται από τον υπολογιστή.
# / bin / bash # Ένας τυχαίος αριθμός δημιουργείται από 1 έως 10, αποθηκεύεται # σε RANDOM RANDOM = $ [$ RANDOM% 10 + 1] ενώ [1] κάνει echo –n "Enter a number:" read NUM # Συγκρίνετε εάν ο αριθμός που έχει επιλέξει ο χρήστης είναι # ίσος με το RANDOM. Θυμηθείτε να χρησιμοποιήσετε το $ για να αξιολογήσετε τις # τιμές των μεταβλητών και όχι τα ονόματά τους εάν ["$ NUM –eq" $ RANDOM "]; μετά ηχώ "Το πήρατε σωστά!" Το #break επιτρέπει τον τερματισμό του βρόχου ενώ το διάλειμμα # Εάν ο αριθμός είναι μικρότερος από το RANDOM elif ["$ NUM –gt" $ RANDOM "]; μετά ηχώ "Είναι λιγότερο" "Αν όχι, είναι μεγαλύτερο από το RANDOM αλλιώς η ηχώ" ΕΙΝΑΙ μεγαλύτερη "ολοκληρώθηκε
3. Μέχρι: αρκετά παρόμοια στη δομή με το While, εκτός του ότι ο κώδικας εκτελείται πάντα, ενώ η αξιολόγηση της συνθήκης είναι αρνητική, δηλαδή, το πρόγραμμα συνεχίζει να εκτελεί "έως ότου εμφανιστεί η συνθήκη"
μέχρι να γίνει εντολή CONDITION / COMMAND
Παράδειγμα: εκτυπώστε τους αριθμούς 10-20 σε φθίνουσα σειρά
#! / bin / bash CONT = 20 # Όσο ο μετρητής είναι μικρότερος από 10 (-lt, "lower #than") ο κώδικας εκτελείται έως [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT αφαιρείται από μια μονάδα αφήστε CONT- = 1 ολοκληρωθεί
4. Επιλέξτε: αυτός ο τελευταίος κύκλος είναι μια ειδική περίπτωση, δεδομένου ότι χρησιμοποιείται γενικά για γρήγορη δημιουργία μενού. Λειτουργεί παρόμοια με το βρόχο For.
επιλέξτε VARIABLE στη λίστα των εντολών που έχουν γίνει
Παράδειγμα: δώστε στον χρήστη τη δυνατότητα να συνεχίσει ή να τερματίσει το σενάριο.
#! / bin / bash #item είναι μια μεταβλητή που ανταποκρίνεται σε αυτό που επιλέγει ο # χρήστης, Συνέχεια και Τέλος είναι οι # επιλογές που έχει στη διάθεσή του, αν και μπορούν να προστεθούν και άλλες επιλογές τερματίστε το πρόγραμμα, και μετά με διάλειμμα βγαίνουμε από τον κύκλο. αν [$ item = "Finish"]; μετά το σπάσιμο