
Μεταβλητές που αποθηκεύουν παραμέτρους θέσης
Ένα τυπικό παράδειγμα ενός κελύφους που χρησιμοποιεί παραμέτρους θέσης είναι bash. Μπορείτε να χρησιμοποιήσετε το bash σε Linux, BSD, macOS X και Windows 10.
Εξετάστε την ακόλουθη εντολή bash. Το όνομα της εντολής είναι το mycommand . Η γραμμή εντολών έχει τρεις παραμέτρους: ένα, δύο και τρία τέσσερα .
mycommand ένα δύο "τρία τέσσερα"
Συμβουλή: Οι παράμετροι θέσης οριοθετούνται από ένα κενό. Το κέλυφος ερμηνεύει τα πράγματα μετά από τους χώρους ως μεμονωμένες παραμέτρους. Εάν η ίδια η παράμετρος περιέχει ένα κενό, τοποθετήστε το σε εισαγωγικά, όπως στο παραπάνω "τρία τέσσερα".
Ενώ το mycommand εκτελείται, το bash παρέχει τις παρακάτω μεταβλητές κελύφους:
Όνομα μεταβλητής | αξία |
---|---|
$ 0 | mycommand |
$ 1 | ένας |
$ 2 | δύο |
$ 3 | τρία τέσσερα |
$ # | 3 |
[προστατευμένο με ηλεκτρονικό ταχυδρομείο] | ένα δύο τρία τέσσερα |
$ * | ένα δύο τρία τέσσερα |
Η μεταβλητή $ 0 έχει οριστεί στην πρώτη λέξη της εντολής - το όνομα της εντολής. Αυτή η μεταβλητή είναι χρήσιμη επειδή οι εντολές μπορούν να μετονομαστούν ή να εκτελεστούν χρησιμοποιώντας συμβολική σύνδεση. Ορισμένα προγράμματα συμπεριφέρονται διαφορετικά ανάλογα με το όνομα της εντολής που χρησιμοποιείται για την εκτέλεση του προγράμματος. Το $ 0 επιτρέπει σε ένα πρόγραμμα να δει ποιο όνομα του εντολή ξεκίνησε.
Οι μεταβλητές $ 1, $ 2 και $ 3 περιέχουν τις τιμές της πρώτης, δεύτερης και τρίτης παραμέτρου, αντίστοιχα. Εάν υπήρχε μια τέταρτη παράμετρος, η τιμή της θα τοποθετηθεί στη μεταβλητή $ 4 . Οι παράμετροι μεγαλύτερες από 9 μπορούν να προσπελαστούν με τη χρήση σγουράδων γύρω από τον αριθμό. για παράδειγμα, $ {10} θα είναι η δέκατη παράμετρος και $ {123} θα είναι η 123η.
Η μεταβλητή $ # περιέχει τον αριθμό των παραμέτρων θέσης, εξαιρουμένων των $ 0.
Η μεταβλητή [email protected] περιέχει την τιμή όλων των παραμέτρων θέσης, εξαιρουμένων των $ 0.
Η μεταβλητή $ * είναι ίδια με την [email protected], εκτός αν είναι διπλή. Όταν περικλείεται σε διπλά εισαγωγικά, το $ * επεκτείνεται στο $ 1c $ 2c $ 3c ... όπου c είναι ο πρώτος χαρακτήρας της μεταβλητής διαχωριστή πεδίου $ IFS, της εσωτερικής μεταβλητής πεδίου του bash. Το IFS χρησιμοποιείται για διαχωρισμό λέξεων και η προεπιλεγμένη τιμή του είναι "space, tab ή newline" - αυτό είναι όπου bash βλέπει το τέλος μιας λέξης και την αρχή του επόμενου.
Εάν η τιμή του $ IFS είναι " _ " (υπογράμμιση), "[email protected]" επεκτείνεται σε:
ένα δύο τρία τέσσερα
Ενώ το "$ *" επεκτείνεται σε:
ένα δύο τρία τέσσερα
Παραδείγματα
Ακολουθούν ορισμένα παραδείγματα χρήσης παραμέτρων θέσης σε bash.
Χρησιμοποιώντας την ενσωματωμένη εντολή, η τιμή του [email protected] μπορεί να τροποποιηθεί για το τρέχον κέλυφος. Όλα μετά από τη ρύθμιση - θα καταχωρηθούν ως παράμετρος θέσης.
σύνολο - ένα δύο "τρία τέσσερα"
Τώρα μπορούμε να επαναλάβουμε αυτές τις μεταβλητές χρησιμοποιώντας για ... σε :
για arg σε [προστατευμένο με ηλεκτρονικό ταχυδρομείο]? κάνει echo "$ arg"; Έγινε
ένα δύο τρία τέσσερα
Στο bash, η [προστασία με ηλεκτρονικό ταχυδρομείο] είναι η προεπιλεγμένη λίστα για επανάληψη όταν εκτελείτε, γι 'αυτό και αυτή η εντολή λειτουργεί:
για arg; κάνει echo "$ arg"; Έγινε
ένα δύο τρία τέσσερα
Η παρεκτροπή πάνω από το "$ *" (με διπλά εισαγωγικά) θα παράσχει μια ακολουθία συμβολοσειρών παραμέτρων θέσης, ενώνονται με τον πρώτο χαρακτήρα του $ IFS :
IFS = ", ". για arg σε "$ *"; κάνει echo "$ arg"; Έγινε
ένα δύο τρία τέσσερα
Για περισσότερες πληροφορίες, ανατρέξτε στην τεκμηρίωση του κελύφους εντολών bash.
Παράμετρος, όροι προγραμματισμού