Μέρος δεύτερο από αυτό μίνι φροντιστήριο προγραμματισμός σε 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"]; μετά το σπάσιμο
13 σχόλια, αφήστε τα δικά σας
Νομίζω κάτι τέτοιο: tar -cf - Κατάλογος | (cd / other / κατάλογος; tar -xvf -)
Τότε θα μοιάζει με / άλλο / κατάλογο / Κατάλογος
Με αυτόν τον τρόπο συμπίεσα έναν κατάλογο και τον αποσυμπιέζεις σε άλλο μέρος….
Γεια σας, καλό μάθημα, μαθαίνω για το θέμα και όλα είναι καλά, μόνο που δεν μπόρεσα να κάνω ένα πρόγραμμα που με βοηθά, δείτε αν μπορείτε να με βοηθήσετε παρακαλώ.
Πρέπει να κάνω έναν κύκλο, στον οποίο θα λαμβάνει ως παραμέτρους μια λίστα με ένα αρχείο προέλευσης, αυτή η λίστα φέρνει μόνο ονόματα (χωρίς επέκταση), έτσι ώστε ο κύκλος να κάνει τα εξής, να αναζητήσει το εν λόγω όνομα που έχει ληφθεί σε έναν κατάλογο (αυτός είναι αυτός που θα αναζητήσουμε) , εξαγάγετε και αντιγράψτε το αρχείο (το πλήρες όνομα ήδη με επέκταση) και την απόλυτη διαδρομή και δημιουργήστε το σε άλλο αρχείο προορισμού.
Μέχρι στιγμής έχω τα εξής:
ενώ διαβάζετε τη γραμμή
do
echo -e "γραμμή $"
εύρεση / home / myuser / dof "$ line" -exec readlink -f {};
ολοκληρώθηκε <testlist.txt Μέχρι στιγμής έχω διαβάσει το αρχείο, κάθε γραμμή που έχει, αλλά δεν μπορώ να το αναζητήσω και να εξαγάγω τις πληροφορίες, αν μπορείτε να με βοηθήσετε, ευχαριστώ. Στην υγειά σας
Ευχαριστώ πολύ για τη συμβολή 🙂
γεια ... Ελπίζω να βοηθήσετε στην επόμενη πρακτική ... Αποσυμπιέστε το αρχείο σε tgz στον καθορισμένο κατάλογο, εκτός από τον καθορισμό χρήστη και ομάδας για όλους τους υπάρχοντες καταλόγους και αρχεία και εκχωρήστε δικαιώματα σε αρχεία και καταλόγους
σημείωση: αρχεία έτοιμα για ανάγνωση και γραφή
άδεια εκτέλεσης καταλόγων
Το ARCH-DESTINATION είναι μια μεταβλητή στην οποία θέλουμε να αποθηκεύσουμε τη διαδρομή του αρχείου προορισμού, εκτός από την απόλυση. Στη συνέχεια, σε αυτήν τη μεταβλητή υποδεικνύουμε τη μεταβλητή DESTINATION, η οποία περιέχει παραπάνω τη διαδρομή προς το φάκελο Documents και προσθέτουμε τη "μεταβλητή" FILE, η οποία περιέχει το όνομα του αρχείου. Εάν το αρχείο ήταν, για παράδειγμα, list.doc, η μεταβλητή ARCH-DESTINATION θα είναι ίση με το /home/Usuario/Documentos/listado.doc
Είναι το προηγούμενο άρθρο. Μπορείτε να έχετε πρόσβαση στο http://usemoslinux.blogspot.com
Αγκαλιάζω! Παύλος.
Καλημέρα φίλε σας ευχαριστώ, το ιστολόγιό σας είναι πολύ καλό, αλλά δεν μπορώ να λάβω το πρώτο μέρος του Προγραμματισμού στο Bash, όπου το παίρνω ευχαριστώ, χαιρετισμούς
Δύο εξαιρετικά μέρη, ειλικρινά συγχαρητήρια.
Απλά υπέροχο.
Bien
Γεια σας, κάνω ένα πρόγραμμα με CASE, τι θέλω να κάνει και δεν ξέρω πώς, για παράδειγμα:
echo Επιλέγει μια επιλογή:
ηχώ
echo 1. επιλογή 1
echo 2. επιλογή 2
echo 3. επιλογή 3
echo 4. επιλογή 4
echo 5. Έξοδος
διαβάστε το var
υπόθεση "$ var" σε
1)
echo "Επιλέξατε την επιλογή 1"
;;
2)
echo "Επιλέξατε την επιλογή 2"
;;
3)
πέταξε έξω "….."
;;
4)
πέταξε έξω "…."
;;
5)
πέταξε έξω "…"
;;
*)
ηχώ "λάθος επιλογή"
;;
ότι Γ
εντάξει αυτό που δεν ξέρω πώς να το κάνω είναι ότι όταν επιλέγω την επιλογή 4 που πρόκειται να φύγω, ρωτήστε αν θέλω πραγματικά να φύγω και δώστε μου 2 επιλογές Y & N
και το άλλο είναι ότι όταν επιλέγετε κάτι διαφορετικό από τους αριθμούς 1..5 μην με ψηφίζετε από το σενάριο….
Θα μπορούσατε να με βοηθήσετε ευχαριστώ.
Γεια, Άρχισα να γράφω script πριν από 1 μήνα και χάρη στις αναρτήσεις σας. Θα έκανα περίπου 15-20. Σας ευχαριστώ πολύ εκ των προτέρων. Αλλά τώρα ο δάσκαλός μας μας έδωσε μια δουλειά της οποίας έχω σταματήσει. Δεδομένου ότι ο δάσκαλος ρωτά:
περνώντας έναν κατάλογο, αντιγράψτε στο σπίτι σας όλα τα αρχεία που βρίσκονται σε αυτόν τον κατάλογο αλφαβητικά και τα ονομάζοντάς τα file1 file2 κλπ ... κλπ ...
Τώρα είμαι τη στιγμή εύρεσης ή εντοπισμού, ήθελα να χρησιμοποιήσω το εύρημα, αλλά όταν του έδωσα τον κωδικό σφάλματος καθώς το έβαλα μέσω του dev null, τα δικαιώματα αρνήθηκαν και μετά κάνω λάθος και βάζω το locate που είμαι εδώ:
εντοπίστε $ 1 | grep "/ $ {1} \ $"
αλλά φυσικά με αυτό βγαίνουν όλοι ...
Σας ευχαριστώ πολύ αν το διαβάσετε.
Εάν μπορείς να με βοηθήσεις θα ήταν μεγάλη χάρη.
Θα ήθελα να με βοηθήσεις με αυτό.
1.-Πληκτρολογήστε έναν ολόκληρο αριθμό στο πληκτρολόγιο και εμφανίστε δύο φορές και τριπλασιάστε αυτόν τον αριθμό στην οθόνη. 2.- Κάντε ένα πρόγραμμα για να αποφασίσετε εάν ένας αριθμός που πληκτρολογείται από το πληκτρολόγιο διαιρείται με 3 ή όχι.
3.- Δημιουργήστε ένα πρόγραμμα για να βρείτε το άθροισμα: ???????? + ???????? + ???????? + ???????? + ⋯; ???????
4.- Κάντε ένα πρόγραμμα για να βρείτε το άθροισμα 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
5. - Δημιουργήστε ένα πρόγραμμα που εκτυπώνει τη λέξη Linux στην οθόνη 10 φορές
6. - Δημιουργήστε ένα πρόγραμμα που εκτυπώνει τη λέξη Linux στην οθόνη τον αριθμό των φορών που υποδεικνύει ένας χρήστης.
7.-Εισαγάγετε ένα ποσό σε ώρες και μετατρέψτε το σε λεπτά και δευτερόλεπτα.
8.-Υπολογίστε την περιοχή ενός τριγώνου
9.-Πληκτρολογήστε έναν αριθμό στο πληκτρολόγιο και, στη συνέχεια, αν πληκτρολογήσετε 2 θα πρέπει να είναι τετράγωνο, 3 κύβους, 4 έως το τέταρτο και ούτω καθεξής έως και 6.
10-Υπολογίστε τη σύνταξη που πρέπει να πληρώσει ένας μαθητής, πρέπει να εισαχθεί ο κωδικός ειδικότητας και οι καθυστερημένες ημέρες:
ΚΩΔΙΚΑΣ
ΕΙΔΙΚΟΤΗΤΑ
ΠΟΣΟ
ΔΙΑΡΚΕΙΑ ανά ημέρα
1
ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΗ
160
1
2
ΘΗΛΑΣΜΟΣ
150
1.5
3
ΓΡΑΜΜΑΤΕΙΑ
140
2
4
ΤΟΥΡΙΣΜΟΣ
180
2.5
5
ΛΟΓΙΣΤΙΚΗ
160
1
Πρέπει να δείξετε την ειδικότητα που μελετάτε, το κόστος της σύνταξης, την προεπιλογή και το συνολικό ποσό που πρέπει να πληρώσετε.
Γεια σας, μπορεί κάποιος να με βοηθήσει;
Χρειάζομαι «Αίτηση τριών λέξεων με πληκτρολόγιο και εμφάνιση τους με αλφαβητική σειρά από A έως z»
Σε γλώσσα Bash ή sh για το LINUX porfaborrrr