Android

Bash συστοιχίες

Bash Tutorial 6: Arrays

Bash Tutorial 6: Arrays

Πίνακας περιεχομένων:

Anonim

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

Bash Arrays

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

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

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

Το Bash δεν υποστηρίζει πολυδιάστατες συστοιχίες και δεν μπορείτε να έχετε στοιχεία πίνακα που είναι επίσης πίνακες.

Δεν υπάρχει όριο στον μέγιστο αριθμό στοιχείων που μπορούν να αποθηκευτούν σε έναν πίνακα.

Δημιουργία συστοιχιών μπάσων

Οι πίνακες στο Bash μπορούν να αρχικοποιηθούν με διαφορετικούς τρόπους.

Δημιουργία αριθμητικά ευρετηριασμένων συστοιχιών

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

Για να δηλώσετε ρητά έναν πίνακα, χρησιμοποιήστε το declare builtin:

declare -a array_name

Ένας τρόπος για να δημιουργήσετε έναν ευρετήριο πίνακα είναι χρησιμοποιώντας την ακόλουθη φόρμα:

array_name=value_1 array_name=value_2 array_name=value_n

Όπου index_* είναι ένας θετικός ακέραιος αριθμός.

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

array_name=(element_1 element_2 element_N)

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

Δημιουργία συσσωματικών συστοιχιών

Σε αντίθεση με την αριθμητική ευρετηρίαση, οι συσσωματικές συστοιχίες πρέπει να δηλώνονται πριν μπορέσουν να χρησιμοποιηθούν.

Για να δηλώσετε μια συσσωρευτική συστοιχία, χρησιμοποιήστε την εντολή ενσωματωμένη με την επιλογή -A (κεφαλαία):

declare -A array_name

Οι συσσωρευτικές συστοιχίες μπορούν να δημιουργηθούν χρησιμοποιώντας την ακόλουθη φόρμα:

declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz

Όπου index_* μπορεί να είναι οποιαδήποτε συμβολοσειρά.

Μπορείτε επίσης να δημιουργήσετε έναν συσχετιστικό πίνακα χρησιμοποιώντας την παρακάτω φόρμα:

declare -A array_name array_name=(=value_foo =value_bar =value_xyz)

Λειτουργίες πίνακα

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

Στοιχεία αναφοράς

Για να αναφέρετε ένα μόνο στοιχείο, πρέπει να γνωρίζετε τον ευρετήριο στοιχείων.

Οποιοδήποτε στοιχείο μπορεί να αναφερθεί χρησιμοποιώντας την ακόλουθη σύνταξη:

${array_name} Η σύνταξη για την πρόσβαση σε ένα στοιχείο πίνακα είναι παρόμοια με τη σύνταξη των περισσότερων από τις γλώσσες προγραμματισμού. Οι σγουρές τιράντες ${} είναι απαραίτητες για να αποφύγουν τους διαχειριστές επέκτασης του αρχείου του κελύφους.

Ας εκτυπώσουμε το στοιχείο με δείκτη 1 :

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}

Helium

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium

Η μόνη διαφορά μεταξύ των @ και * είναι όταν η φόρμα ${my_array} περιβάλλεται από διπλά εισαγωγικά. Σε αυτή την περίπτωση, * επεκτείνεται σε μια μόνο λέξη όπου τα στοιχεία συστοιχίας χωρίζονται με χώρο. @ επεκτείνει κάθε στοιχείο πίνακα σε μια ξεχωριστή λέξη. Αυτό είναι ιδιαίτερα σημαντικό όταν χρησιμοποιείτε τη φόρμα για να αναλφάρετε μέσα από στοιχεία πίνακα.

Για να εκτυπώσετε τα πλήκτρα της συστοιχίας, προσθέστε το ! πριν από το όνομα της συστοιχίας:

${!array_name}

Ακολουθεί ένα παράδειγμα:

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"

0 1 2 3

Μήκος πίνακα

Για να πάρετε το μήκος ενός πίνακα, χρησιμοποιήστε την παρακάτω φόρμα:

${#array_name} Η σύνταξη είναι ίδια με την αναφορά σε όλα τα στοιχεία με την προσθήκη του χαρακτήρα # πριν από το όνομα της συστοιχίας.

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

Βγείτε μέσω της συστοιχίας

Ο πιο συνηθισμένος τρόπος επανάληψης σε κάθε στοιχείο σε έναν πίνακα είναι η χρήση του βρόχου for:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done

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

Hydrogen Helium Lithium Beryllium

Ακολουθεί ένα παράδειγμα για τον τρόπο εκτύπωσης όλων των κλειδιών και τιμών:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Ένας άλλος τρόπος για να βγείτε μέσω ενός πίνακα είναι να πάρετε το μήκος του πίνακα και να χρησιμοποιήσετε τον βρόχο C style :

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Προσθέστε ένα νέο στοιχείο

Για να προσθέσετε ένα νέο στοιχείο σε μια array bash και να καθορίσετε τον δείκτη του, χρησιμοποιήστε την ακόλουθη φόρμα:

my_array="New Element"

Ακολουθεί ένα παράδειγμα:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Aluminum

Ένας άλλος τρόπος για να προσθέσετε ένα νέο στοιχείο σε έναν πίνακα χωρίς να καθορίσετε το ευρετήριο είναι χρησιμοποιώντας τον τελεστή += . Μπορείτε να προσθέσετε ένα ή περισσότερα στοιχεία:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Cobalt Nickel

Διαγράψτε ένα στοιχείο

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

unset my_array

Ας δούμε ένα παράδειγμα:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"

Hydrogen Helium Beryllium

συμπέρασμα

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

bash terminal