1. Χορηγίες διαχωρισμένου με κενά:
Αυτή είναι η απλούστερη μέθοδος. Μπορείτε ουσιαστικά να αποθηκεύσετε στοιχεία ως ενιαία συμβολοσειρά, χωρισμένα από χώρους (ή άλλους οριοθέτες που επιλέγετε). Η πρόσβαση σε μεμονωμένα στοιχεία απαιτεί χειραγώγηση συμβολοσειρών.
`` `bash
my_array ="κεράσι μπανάνας μήλου"
first_element ="$ {my_array %% *}" #Removes τα πάντα από τον πρώτο χώρο και μετά.
echo "$ first_element" # έξοδος:Apple
Second_Element ="$ {my_array #*}" #Removes τα πάντα μέχρι τον πρώτο χώρο.
second_element ="$ {second_element %% *}" #Removes τα πάντα από τον πρώτο χώρο και μετά
echo "$ second_element" # έξοδος:μπανάνα
#ITERITION (λιγότερο αποτελεσματική):
για φρούτα στο $ my_array; κάνω
echo "$ fruit"
γινώμενος
`` `
Περιορισμοί: Αυτή η προσέγγιση είναι επιρρεπής σε σφάλματα εάν τα στοιχεία συστοιχίας περιέχουν χώρους.
2. Χρησιμοποιώντας συστοιχίες σε bash (και άλλα κελύφη με υποστήριξη συστοιχίας):
Το Bash (και κάποια άλλα σύγχρονα κελύφη) παρέχουν πιο ισχυρή υποστήριξη συστοιχίας.
`` `bash
my_array =("apple" "μπανάνα" "κεράσι")
echo "$ {my_array [0]}" # έξοδος:Apple
echo "$ {my_array [1]}" # έξοδος:μπανάνα
echo "$ { # my_array [@]}" # έξοδος:3
γιατί εγώ στο "$ {! my_array [@]}"; Κάντε #ITERATE μέσω δεικτών
echo "$ {my_array [i]}"
γινώμενος
για φρούτα στο "$ {my_array [@]}"; κάνω
echo "$ fruit"
γινώμενος
#Προσθέστε στοιχεία:
my_array+=("ημερομηνία")
echo "$ {my_array [3]}" #output:Ημερομηνία
#Παρέχεται σε συστοιχία:
my_array+=(πορτοκαλί σταφυλιών)
#Στοιχεία (λιγότερο απλά, απαιτεί μετατόπιση):
Unset 'My_Array [1]' #Removes Element στο Index 1 (Banana)
#Σημείωση ότι οι δείκτες δεν μετατοπίζονται αυτόματα. Δεν υπάρχει ενσωματωμένη μετατόπιση μετά τη διαγραφή.
για φρούτα στο "$ {my_array [@]}"; κάνω
echo "$ fruit"
γινώμενος
`` `
Σημαντικές εκτιμήσεις:
* Αναφορά: Πάντα να παραθέτουμε μεταβλητές συστοιχίας (π.χ., `" $ {my_array [@]} "`) για να αποφευχθεί η διάσπαση των λέξεων και η σφαίρα, γεγονός που μπορεί να οδηγήσει σε απροσδόκητη συμπεριφορά. Αυτό είναι ιδιαίτερα κρίσιμο όταν τα στοιχεία συστοιχίας ενδέχεται να περιέχουν χώρους ή ειδικούς χαρακτήρες.
* Ευρετήριο 0: Οι συστοιχίες στο bash είναι 0-indexed, που σημαίνει ότι το πρώτο στοιχείο είναι στο δείκτη 0.
* Ειδικό κέλυφος: Η σύνταξη και τα διαθέσιμα χαρακτηριστικά για συστοιχίες ενδέχεται να διαφέρουν ελαφρώς ανάλογα με το συγκεκριμένο κέλυφος που χρησιμοποιείτε (bash, zsh, ksh κ.λπ.).
3. Χρήση εργαλείων γραμμής εντολών για λειτουργίες που μοιάζουν με πίνακες:
Για πιο πολύπλοκες χειρισμούς συστοιχίας (διαλογή, φιλτράρισμα κ.λπ.), θα το βρείτε συχνά πιο αποτελεσματικό για να χρησιμοποιήσετε εξωτερικές επιχειρήσεις κοινής ωφέλειας, όπως `awk`,` sed 'ή `sort'. Αυτά τα εργαλεία υπερέχουν στην επεξεργασία κειμένου, τα οποία μπορούν να προσαρμοστούν ώστε να λειτουργούν με δεδομένα δομημένα ως οριοθετημένες χορδές.
Για παράδειγμα, για να ταξινομήσετε τα στοιχεία μιας διαχωρισμένης συμβολοσειράς:
`` `bash
my_array ="κεράσι μπανάνας μήλου"
echo "$ my_array" | tr '' '\ n' | Ταξινόμηση | tr '\ n' ''
`` `
Συνοπτικά, ενώ τα κελύφη Unix δεν έχουν ενσωματωμένες, πλούσιες δομές συστοιχίας όπως άλλες γλώσσες, η στήριξη της σειράς Bash είναι επαρκής για πολλά καθήκοντα. Για πολύπλοκες χειρισμούς, εξετάστε τη μόχλευση της δύναμης των βοηθητικών προγραμμάτων επεξεργασίας κειμένου. Θυμηθείτε να αναφέρετε πάντα τις μεταβλητές σας σωστά για να αποφύγετε πιθανά σφάλματα.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα