Προγραμματισμός σε bash - μέρος 2

Μέρος δεύτερο από αυτό μίνι φροντιστήριο προγραμματισμός σε 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"]; μετά το σπάσιμο
Ευχαριστώ Juan Carlos Ortiz!

Προσθήκη ως προτιμώμενης πηγής στην Google