Android

Schițe de bare

Advanced Shell Scripting Tutorial | Delete More Than X Days Directories | Tech ArkIT

Advanced Shell Scripting Tutorial | Delete More Than X Days Directories | Tech ArkIT

Cuprins:

Anonim

Array-urile sunt una dintre cele mai utilizate și fundamentale structuri de date. Vă puteți gândi că o matrice este o variabilă care poate stoca mai multe variabile în cadrul acesteia., vom acoperi matricile Bash și vă vom explica cum să le utilizați în scripturile dvs. Bash.

Arhive Bash

Bash acceptă tipuri de matrice unice și indexate numeric. Matricile numerice sunt referite folosind numere întregi, iar asociativ este trimis folosind șiruri.

Matricele indexate numeric pot fi accesate de la capăt folosind indici negativi, indexul -1 face referire la ultimul element. Indicii nu trebuie să fie contiguiți.

Spre deosebire de majoritatea limbajelor de programare, elementele tabloului Bash nu trebuie să fie de același tip de date. Puteți crea un tablou care conține atât șiruri, cât și numere.

Bash nu acceptă tablouri multidimensionale și nu puteți avea elemente de matrice care sunt și tablouri.

Nu există nicio limită la numărul maxim de elemente care pot fi stocate într-un tablou.

Crearea de Arhiere Bash

Schițele în Bash pot fi inițializate în moduri diferite.

Crearea tablourilor indexate numeric

Variabilele Bash nu sunt testate, orice variabilă poate fi utilizată ca un tablou indexat fără a o declara.

Pentru a declara în mod explicit un tablou, utilizați declarația încorporată:

declare -a array_name

O modalitate de a crea un tablou indexat este folosirea formularului următor:

array_name=value_1 array_name=value_2 array_name=value_n

Unde index_* este un număr întreg pozitiv.

Un alt mod de a crea un tablou numeric este de a specifica lista elementelor din paranteze, separate prin spațiu gol:

array_name=(element_1 element_2 element_N)

Când tabloul este creat folosind formularul de mai sus, indexarea începe de la zero adică primul element are un indice de 0 .

Crearea tablourilor asociative

Spre deosebire de indexate numeric, matricile asociative trebuie declarate înainte de a putea fi utilizate.

Pentru a declara un tablou asociativ, utilizați declare încorporată cu opțiunea -A (cu majuscule):

declare -A array_name

Matricele asociative pot fi create folosind următorul formular:

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

Unde index_* poate fi orice șir.

De asemenea, puteți crea un tablou asociativ folosind formularul de mai jos:

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

Operații de Array

Sintaxa matricelor Bash poate părea un pic ciudată la început, dar va avea mai mult sens odată ce citiți acest articol.

Elemente de referință

Pentru a face referire la un singur element, trebuie să cunoașteți indexul elementului.

Orice element poate fi referit folosind următoarea sintaxă:

${array_name} Sintaxa pentru accesarea unui element de matrice este similară cu sintaxa majorității limbajelor de programare. Bretele ondulate ${} sunt necesare pentru a evita operatorii de expansiune a numelui de fișier shell.

Să tipărim elementul cu un indice de 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

Singura diferență între @ și * este atunci când formularul ${my_array} este înconjurat de ghilimele duble. În acest caz, * se extinde la un singur cuvânt unde elementele de matrice sunt separate cu spațiu. @ extinde fiecare element de matrice la un cuvânt separat. Acest lucru este deosebit de important atunci când se utilizează formularul pentru analfabetizarea prin elemente de matrice.

Pentru a tipări cheile tabloului adăugați ! operator înainte de numele tabloului:

${!array_name}

Iată un exemplu:

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

0 1 2 3

Lungime Array

Pentru a obține lungimea unui tablou, utilizați următorul formular:

${#array_name} Sintaxa este aceeași ca atunci când se face referire la toate elementele cu adăugarea caracterului # înainte de numele tabloului.

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

4

Buclați-vă prin tabel

Cel mai obișnuit mod de a itera peste fiecare element dintr-un tablou este folosind bucla for:

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

Codul de mai sus va itera peste tabel și va tipări fiecare element într-o nouă linie:

Hydrogen Helium Lithium Beryllium

Iată un exemplu de imprimare a tuturor tastelor și valorilor:

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

Un alt mod de a face buclă printr-un tablou este de a obține lungimea tabloului și de a folosi bucla de 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

Adăugați un element nou

Pentru a adăuga un element nou într-un tablou bash și specificați indexul acestuia, utilizați următorul formular:

my_array="New Element"

Iată un exemplu:

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

Un alt mod de a adăuga un element nou la un tablou fără a specifica indexul este folosind operatorul += . Puteți adăuga unul sau mai multe elemente:

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

Ștergeți un element

Pentru a șterge un singur element, va trebui să știți indexul elementului. Un element poate fi eliminat folosind comanda unset :

unset my_array

Să vedem un exemplu:

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

Hydrogen Helium Beryllium

Concluzie

Am explicat cum se creează tablouri indexate numeric și asociative. Am arătat, de asemenea, modul de iterare prin tablouri, cum se calculează lungimea tabloului și se adaugă și se elimină elemente.

terminalul bash