Τι είναι η παράμετρος θέσης;

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

Μεταβλητές που αποθηκεύουν παραμέτρους θέσης

Ένα τυπικό παράδειγμα ενός κελύφους που χρησιμοποιεί παραμέτρους θέσης είναι bash. Μπορείτε να χρησιμοποιήσετε το bash σε Linux, BSD, macOS X και Windows 10.

Εξετάστε την ακόλουθη εντολή bash. Το όνομα της εντολής είναι το mycommand . Η γραμμή εντολών έχει τρεις παραμέτρους: ένα, δύο και τρία τέσσερα .

 mycommand ένα δύο "τρία τέσσερα" 

Συμβουλή: Οι παράμετροι θέσης οριοθετούνται από ένα κενό. Το κέλυφος ερμηνεύει τα πράγματα μετά από τους χώρους ως μεμονωμένες παραμέτρους. Εάν η ίδια η παράμετρος περιέχει ένα κενό, τοποθετήστε το σε εισαγωγικά, όπως στο παραπάνω "τρία τέσσερα".

Ενώ το mycommand εκτελείται, το bash παρέχει τις παρακάτω μεταβλητές κελύφους:

Όνομα μεταβλητήςαξία
$ 0mycommand
$ 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.

Παράμετρος, όροι προγραμματισμού