Το BASH (το οποίο σημαίνει Bourne Again Shell) είναι μια γλώσσα scripting που χρησιμοποιείται από τα περισσότερα λειτουργικά συστήματα που βασίζονται στο Linux και UNIX.
Μπορείτε να εκτελέσετε εντολές BASH μέσα σε ένα παράθυρο τερματικού το ένα μετά το άλλο ή μπορείτε να προσθέσετε τις εντολές σε ένα αρχείο κειμένου για να δημιουργήσετε ένα σενάριο κελύφους.
Το μεγάλο πράγμα για τη συγγραφή κελυφών είναι ότι μπορείτε να τα εκτελέσετε ξανά και ξανά. Για παράδειγμα, φανταστείτε ότι πρέπει να προσθέσετε χρήστη σε ένα σύστημα, να ορίσετε τα δικαιώματά του και να διαχειριστείτε το περιβάλλον έναρξης. Μπορείτε είτε να γράψετε τις εντολές σε ένα κομμάτι χαρτί και να τις εκτελέσετε καθώς προσθέτετε νέους χρήστες ή μπορείτε να γράψετε ένα μόνο σενάριο και να περάσετε μόνο τις παραμέτρους σε αυτό το σενάριο.
Οι γλώσσες συγγραφής, όπως το BASH, έχουν παρόμοιες δομές προγραμματισμού με άλλες γλώσσες. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε παραμέτρους εισαγωγής για να λάβετε πληροφορίες από το πληκτρολόγιο και να τις αποθηκεύσετε ως μεταβλητές. Στη συνέχεια, μπορείτε να πάρετε το σενάριο για να εκτελέσετε μια συγκεκριμένη ενέργεια με βάση την τιμή των παραμέτρων εισόδου.
Ένα βασικό μέρος κάθε γλώσσας προγραμματισμού και δέσμης ενεργειών είναι η δυνατότητα να εκτελείται το ίδιο κομμάτι κώδικα ξανά και ξανά.
Υπάρχουν διάφοροι τρόποι επαναλήψεως του κώδικα (επίσης γνωστούς ως βρόχοι). Σε αυτόν τον οδηγό, θα δείξετε πώς να γράψετε ένα βρόχο "για".
ΕΝΑ Για loop επαναλαμβάνει ένα συγκεκριμένο τμήμα του κώδικα ξανά και ξανά. Είναι χρήσιμα, ώστε μια σειρά εντολών να μπορούν να συνεχίσουν να λειτουργούν μέχρι να επιτευχθεί μια συγκεκριμένη συνθήκη, μετά την οποία θα σταματήσουν.
Σε αυτόν τον οδηγό, θα εμφανιστούν πέντε τρόποι για να χρησιμοποιήσετε τον βρόχο for για ένα σενάριο BASH.
Πριν ξεκινήσετε
Πριν να ξεκινήσετε με τα παραδείγματα για το βρόχο, πρέπει να ανοίξετε ένα παράθυρο τερματικού και να ακολουθήσετε τα εξής βήματα:
-
Εισαγω mkdir scripts (μάθετε περισσότερα για το mkdir εδώ).
-
Εισαγω cd scripts (αυτό αλλάζει τον κατάλογο στον σεναρίων ).
-
Εισαγω nano examplen.sh (όπου n είναι το παράδειγμα στο οποίο εργάζεστε).
-
Εισαγάγετε το σενάριο.
-
Τύπος CTRL + O για να αποθηκεύσετε και CTRL + X για έξοδο.
-
Τρέξιμο bash examplen.sh (και πάλι, με n είναι το παράδειγμα με το οποίο εργάζεστε).
Πώς να κάνετε βρόχο μέσω μιας λίστας
#! / bin / bashfor αριθμός σε 1 2 3 4 5doecho $ numberdoneexit 0
Ο τρόπος BASH για τη χρήση βρόχων "for" είναι κάπως διαφορετικός από τον τρόπο που οι περισσότερες άλλες γλώσσες προγραμματισμού και δέσμης ενεργειών χειρίζονται "βρόχους". Ας σπάσουμε το σενάριο. Σε ένα BASH "για" βρόχο όλα, οι δηλώσεις μεταξύ κάνω και Έγινε εκτελούνται μία φορά για κάθε στοιχείο της λίστας. Στο παραπάνω παράδειγμα, ο κατάλογος είναι ό, τι έρχεται μετά τη λέξη σε (δηλαδή 1 2 3 4 5). Κάθε φορά που επαναλαμβάνεται ο βρόχος, η επόμενη τιμή στη λίστα εισάγεται στη μεταβλητή που καθορίζεται μετά τη λέξη "Για" . Στον παραπάνω βρόχο, ονομάζεται η μεταβλητή αριθμός . Η αναφορά ηχούς χρησιμοποιείται για την εμφάνιση πληροφοριών στην οθόνη. Επομένως, αυτό το παράδειγμα παίρνει τους αριθμούς 1 έως 5 και τα εξάγει ένα προς ένα στην οθόνη: Το πρόβλημα με το παραπάνω παράδειγμα είναι ότι αν θέλετε να επεξεργαστείτε μια μεγαλύτερη λίστα (π.χ. 1 έως 500), θα χρειαστούν οι ηλικίες για να πληκτρολογήσετε πρώτα όλους τους αριθμούς. Αυτό μας οδηγεί στο δεύτερο παράδειγμα που δείχνει πώς να καθορίσουμε ένα σημείο έναρξης και ένα τέλος: #! / bin / bashfor στον αριθμό {1..10} doecho "$ αριθμός" doneexit 0
Οι κανόνες είναι βασικά οι ίδιοι. Οι τιμές μετά τη λέξη " σε" συνθέτουν τη λίστα για να επαναλάβει και κάθε τιμή στη λίστα τοποθετείται στη μεταβλητή (δηλαδή τον αριθμό) και κάθε φορά που επαναλαμβάνεται ο βρόχος, οι δηλώσεις μεταξύ κάνω και Έγινε εκτελούνται. Η κύρια διαφορά είναι ο τρόπος με τον οποίο διαμορφώνεται ο κατάλογος. Τα σγουρά αγκύλια {} ουσιαστικά υποδηλώνουν ένα εύρος και η περιοχή, στην περίπτωση αυτή, είναι 1 έως 10 (οι δύο κουκίδες διαχωρίζουν την αρχή και το τέλος μιας περιοχής). Αυτό το παράδειγμα, επομένως, διατρέχει κάθε αριθμό μεταξύ 1 και 10 και εξάγει τον αριθμό στην οθόνη ως εξής: Ο ίδιος βρόχος θα μπορούσε να έχει γραφτεί έτσι, με σύνταξη ίδια με το πρώτο παράδειγμα: για τον αριθμό σε 1 2 3 4 5 6 7 8 9 10 Το προηγούμενο παράδειγμα έδειξε πώς να βγάλουμε μεταξύ ενός σημείου έναρξης και ενός τελικού σημείου, οπότε τώρα θα δούμε πώς να παρακάμψετε τους αριθμούς στην περιοχή. Φανταστείτε ότι θέλετε να βρόχο μεταξύ 0 και 100, αλλά να δείχνουν μόνο κάθε δέκατο αριθμό. Το παρακάτω σενάριο δείχνει πώς να το κάνετε ακριβώς αυτό: #! / bin / bashfor στον αριθμό {0..100..10} doecho "$ αριθμός" doneexit 0
Οι κανόνες είναι βασικά οι ίδιοι. Υπάρχει ένας κατάλογος, μια μεταβλητή και ένα σύνολο δηλώσεων που πρέπει να εκτελεστούν μεταξύ κάνω και Έγινε . Ο κατάλογος αυτή τη φορά μοιάζει με αυτό: {0..100..10}. Ο πρώτος αριθμός είναι 0 και ο τελικός αριθμός είναι 100. Ο τρίτος αριθμός (10) είναι ο αριθμός των στοιχείων στη λίστα που θα παραλείψει. Το παραπάνω παράδειγμα, επομένως, εμφανίζει την ακόλουθη έξοδο: Ο τρόπος γραφής του BASH για βρόχους είναι λίγο περίεργος σε σύγκριση με άλλες γλώσσες προγραμματισμού. Μπορείτε, ωστόσο, να γράψετε ένα for loop σε παρόμοιο στυλ με τη γλώσσα προγραμματισμού C, όπως παρακάτω: ($ number% 5 == 0)) thenecho "ο αριθμός $ είναι διαιρούμενος με 5" fi} έξοδος 0 (αριθμός = 1; αριθμός <100;
Ο βρόχος αρχίζει θέτοντας τον μεταβλητό αριθμό σε 1 (αριθμός = 1 ). Ο βρόχος θα παραμείνει αναλλοίωτος ενώ η τιμή ενός αριθμού είναι μικρότερη από 100 ( αριθμό <100 ). Η αξία του αριθμός αλλαγές με την προσθήκη 1 σε αυτό μετά από κάθε επανάληψη ( αριθμός ++ ). Τα πάντα μεταξύ των σγουράκια πραγματοποιούνται μέσω κάθε επανάληψης του βρόχου. Το κομμάτι ανάμεσα στα τιράντες ελέγχει την τιμή του a αριθμός , το χωρίζει με 5 και συγκρίνει το υπόλοιπο με το 0. Εάν το υπόλοιπο είναι 0 τότε ο αριθμός διαιρείται με 5 και στη συνέχεια εμφανίζεται στην οθόνη. Για παράδειγμα: Αν θέλετε να αλλάξετε το μέγεθος βήματος της επανάληψης, μπορείτε να τροποποιήσετε την ενότητα με αριθμό ++ αριθμός = αριθμός + 2 , αριθμός = αριθμός + 5 , ή αριθμός = αριθμός + 10 και τα λοιπα. Αυτό μπορεί να μειωθεί περαιτέρω αριθμός + = 2 ή αριθμός + = 5 . Για βρόχους μπορεί να κάνει περισσότερα από την επανάληψη λιστών αριθμών. Μπορείτε να χρησιμοποιήσετε την έξοδο άλλων εντολών ως λίστα. Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να μετατρέψετε αρχεία ήχου από MP3 σε WAV: #! / bin / bashγια αρχείο σε ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" γίνει
Η λίστα σε αυτό το παράδειγμα είναι κάθε αρχείο με την επέκταση .MP3 στον τρέχοντα φάκελο και η μεταβλητή είναι a αρχείο . ο mpg Η εντολή μετατρέπει το αρχείο MP3 σε WAV. Ωστόσο, ίσως χρειαστεί να το εγκαταστήσετε πρώτα με το διαχειριστή πακέτων.
Πώς να βρόχο μεταξύ ενός σημείου έναρξης και ενός τελικού σημείου
Πώς να παραλείψετε αριθμούς σε μια περιοχή
Μια πιο παραδοσιακή αναζήτηση βρόχου
Ένα πρακτικό παράδειγμα