Οδηγός για αρχάριους για BASH - Παράμετροι εισόδου

Καλώς ήρθατε στο 2ο μέρος του οδηγού για αρχάριους Στη σειρά BASH, η οποία είναι μοναδική στο ότι είναι το μοναδικό σεμινάριο BASH που γράφεται από αρχάριους για αρχάριους.

Οι αναγνώστες αυτού του οδηγού θα αποκτήσουν τις γνώσεις τους καθώς δημιουργώ τις γνώσεις μου και ελπίζω ότι μέχρι το τέλος αυτού θα μπορέσουμε να γράψουμε κάποιες αρκετά έξυπνες γραφές.

Την περασμένη εβδομάδα κάλυψα τη δημιουργία του πρώτου σας σεναρίου το οποίο απλά εμφανίζει τις λέξεις "Hello World". Καλύπτει θέματα όπως οι συντάκτες κειμένων, πώς να ανοίξετε ένα παράθυρο τερματικού, πού να τοποθετήσετε τα σενάρια σας, πώς μπορείτε να εμφανίσετε τις λέξεις "Hello World" και κάποια λεπτά σημεία στους χαρακτήρες διαφυγής όπως τα εισαγωγικά ("").

Αυτή την εβδομάδα θα καλύψω τις παραμέτρους εισόδου. Υπάρχουν και άλλοι οδηγοί που διδάσκουν τέτοιου είδους πράγματα, αλλά βρίσκω ότι μπαίνουν σε κάποια σχετικά χαμηλά επίπεδα και ίσως παρέχουν πάρα πολλές πληροφορίες.

Τι είναι μια παράμετρος;

Στο σενάριο "Hello World" από το τελευταίο σεμινάριο ήταν πολύ στατικό. Το σενάριο δεν έκανε πολύ καθόλου.

Πώς θα μπορούσαμε να βελτιώσουμε το σενάριο "Hello World";

Τι γίνεται με ένα σενάριο που καλωσορίζει το άτομο που το τρέχει; Αντί να λέει "Hello World" θα πει "Hello Gary", "Hello Tim" ή "Hello Dolly".

Χωρίς τη δυνατότητα αποδοχής παραμέτρων εισόδου, θα χρειαστεί να γράψουμε τρία σενάρια "hellogary.sh", "hellotim.sh" και "hellodolly.sh".

Επιτρέποντας στο σενάριό μας να διαβάσει παραμέτρους εισόδου, μπορούμε να χρησιμοποιήσουμε ένα σενάριο για να χαιρετήσουμε κανέναν

Για να το κάνετε αυτό ανοίξτε ένα παράθυρο τερματικού (CTRL + ALT + T) και μεταβείτε στο φάκελο των σεναρίων πληκτρολογώντας το ακόλουθο: ( για την εντολή cd )

cd scripts

Δημιουργήστε ένα νέο σενάριο που ονομάζεται greetme.sh πληκτρολογώντας τα παρακάτω: ( σχετικά με την εντολή αφής )

αγγίξτε το greetme.sh

Ανοίξτε το σενάριο στον αγαπημένο σας επεξεργαστή πληκτρολογώντας τα εξής: ( για την εντολή nano )

nano greetme.sh

Εισαγάγετε το ακόλουθο κείμενο μέσα στο nano:

#! / bin / bash echo "γεια σου $ @"

Πατήστε CTRL και O για να αποθηκεύσετε το αρχείο και στη συνέχεια CTRL και X για να κλείσετε το αρχείο.

Για να εκτελέσετε το σενάριο, πληκτρολογήστε τα ακόλουθα στη γραμμή εντολών, αντικαθιστώντας το όνομά σας.

sh greetme.sh

Αν τρέχω το σενάριο με το όνομά μου εμφανίζονται οι λέξεις "Hello Gary".

Η πρώτη γραμμή έχει τη γραμμή #! / Bin / bash που χρησιμοποιείται για την αναγνώριση του αρχείου ως script bash.

Η δεύτερη γραμμή χρησιμοποιεί την εντολή echo για να επαναλάβει τη λέξη hello και έπειτα υπάρχει η παράξενη σημείωση $ @. ( σχετικά με την εντολή echo )

Το $ @ διευρύνεται για να εμφανίσει κάθε παράμετρο που εισήχθη μαζί με το όνομα του σεναρίου. Έτσι, εάν πληκτρολογείτε "sh greetme.sh tim" θα εμφανίζονται οι λέξεις "hello tim". Αν πληκτρολογήσατε "greetme.sh tim smith" τότε θα εμφανιστούν οι λέξεις "hello tim smith".

Ίσως είναι ωραίο για το script greetme.sh να λέει μόνο γεια χρησιμοποιώντας μόνο το πρώτο όνομα. Κανείς δεν λέει "hello gary newell" όταν με συναντούν, θα μπορούσαν να πουν "hello gary" αν και.

Ας αλλάξουμε το σενάριο έτσι ώστε να χρησιμοποιεί μόνο την πρώτη παράμετρο. Ανοίξτε το script greetme.sh στο nano πληκτρολογώντας τα εξής:

nano greetme.sh

Αλλάξτε τη δέσμη ενεργειών έτσι ώστε να διαβάζεται ως εξής:

#! / bin / bash echo "γεια σου $ 1"

Αποθηκεύστε τη δέσμη ενεργειών πιέζοντας τα πλήκτρα CTRL και O και, στη συνέχεια, κλείστε πατώντας CTRL και X.

Εκτελέστε το σενάριο όπως φαίνεται παρακάτω (αντικαταστήστε το όνομά μου με το δικό σας):

sh greetme.sh gary newell

Όταν τρέχετε το σενάριο θα λέει απλά "hello gary" (ή ελπίζω "γεια" και ό, τι το όνομά σας είναι.

Το σύμβολο 1 μετά το σύμβολο $ λέει βασικά στην εντολή echo, χρησιμοποιήστε την πρώτη παράμετρο. Εάν αντικαταστήσετε το $ 1 με $ 2 τότε θα εμφανιστεί το μήνυμα "hello newell" (ή ό, τι είναι το επώνυμό σας).

Παρεμπιπτόντως αν αντικαταστήσατε το $ 2 με $ 3 και εκτελέσατε το σενάριο με μόνο δύο παραμέτρους, η παραγωγή θα ήταν απλώς "Hello".

Είναι δυνατό να εμφανίσετε και να χειριστείτε τον αριθμό των παραμέτρων που εισήχθησαν και σε μεταγενέστερα μαθήματα θα δείξω πώς να χρησιμοποιήσω τον αριθμό των παραμέτρων για σκοπούς επικύρωσης.

Για να εμφανίσετε τον αριθμό των παραμέτρων που έχουν εισαχθεί, ανοίξτε το script greetme.sh (nano greetme.sh) και τροποποιήστε το κείμενο ως εξής:

#! / bin / bash echo "πληκτρολογήσατε $ # ονόματα" echo "hello $ @"

Πατήστε CTRL και O για να αποθηκεύσετε το σενάριο και CTRL και X για να βγείτε από το nano.

Το $ # στην 2η γραμμή εμφανίζει τον αριθμό των παραμέτρων που εισάγονται.

Μέχρι στιγμής όλα αυτά είναι νέα αλλά όχι πολύ χρήσιμα. Ποιος χρειάζεται ένα σενάριο που εμφανίζει απλά "γεια";

Η πραγματική χρήση για τις δηλώσεις ηχώ είναι να παράσχει λεπτομερή και ουσιαστική απόδοση στον χρήστη. Εάν μπορείτε να φανταστείτε ότι θέλετε να κάνετε κάτι περίπλοκο το οποίο περιλαμβάνει κάποια σοβαρή τραγάνισμα αριθμών και χειρισμό αρχείων / φακέλων, θα ήταν χρήσιμο να εμφανίσετε στο χρήστη τι συμβαίνει σε κάθε βήμα του τρόπου.

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

Έχοντας όλα αυτά υπόψη, υπάρχουν κάποιες άλλες χρήσιμες παραμέτρους εισόδου, που είναι καλή ιδέα να γνωρίζουμε και θα τις συμπεριλάβω σε ένα κομμάτι κώδικα.

Ανοίξτε το script greetme.sh και τροποποιήστε το ως εξής:

#! / bin / bash echo "Όνομα αρχείου: $ 0" echo "ID διαδικασίας: $$" echo "---------------------------- --- "echo" εισήγαγε $ # ονόματα "echo" hello $ @ "

Πατήστε CTRL και O για να αποθηκεύσετε το αρχείο και CTRL και X για έξοδο.

Τώρα εκτελέστε το σενάριο (αντικαταστήστε με το όνομά σας).

sh greetme.sh

Αυτή τη φορά το σενάριο εμφανίζει τα εξής:

Όνομα αρχείου: greetme.sh ID διαδικασίας: 18595 ------------------------------ Εισαγάγετε 2 ονόματα hello gary newell

Το $ 0 στην πρώτη γραμμή της δέσμης ενεργειών εμφανίζει το όνομα του σεναρίου που εκτελείτε. Σημειώστε ότι είναι δολάρια μηδέν και όχι δολάρια o.

Το $$ στη δεύτερη γραμμή εμφανίζει το αναγνωριστικό διαδικασίας της δέσμης ενεργειών που εκτελείτε. Γιατί είναι αυτό χρήσιμο; Εάν εκτελείτε μια δέσμη ενεργειών στο προσκήνιο, μπορείτε να την ακυρώσετε απλά πατώντας CTRL και C. Αν εκτελέσετε το σενάριο στο παρασκήνιο και ξεκίνησε το βρόχο και να κάνει το ίδιο πράγμα ξανά και ξανά ή να αρχίσει να προκαλεί ζημιά στο σύστημά σας θα χρειαστείτε να το σκοτώσει.

Για να σκοτώσετε μια δέσμη ενεργειών που εκτελείται στο παρασκήνιο, χρειάζεστε το αναγνωριστικό διαδικασίας του σεναρίου. Δεν θα ήταν καλό αν το σενάριο έδωσε το αναγνωριστικό της διαδικασίας ως μέρος της παραγωγής του. ( σχετικά με τις εντολές ps και kill )

Τέλος, πριν τελειώσω με αυτό το θέμα, ήθελα να συζητήσω για το πού πηγαίνει η παραγωγή. Κάθε φορά που έχει εκτελεστεί το σενάριο μέχρι τώρα, η έξοδος εμφανίζεται στην οθόνη.

Είναι αρκετά συνηθισμένο ότι η έξοδος δέσμης ενεργειών πρέπει να γραφεί σε ένα αρχείο εξόδου. Για να το κάνετε αυτό εκτελέστε το σενάριό σας ως εξής:

sh greetme.sh gary> greetme.log

Το σύμβολο> στην παραπάνω εντολή εξάγει το κείμενο "hello gary" σε ένα αρχείο που ονομάζεται greetme.log.

Κάθε φορά που εκτελείτε τη δέσμη ενεργειών με το σύμβολο> αντικαθιστά τα περιεχόμενα του αρχείου εξόδου. Αν προτιμάτε να προσαρτήσετε στο αρχείο αντικαταστήστε το με> με >>.

Περίληψη

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