Skrypty Bash – tablica

Skrypty Bash – tablica

Tablice to ważne pojęcia w programowaniu lub pisaniu skryptów. Tablice pozwalają nam przechowywać i pobierać elementy w formie listy, które można wykorzystać do określonych zadań. W bashu mamy również tablice, które pomagają nam w tworzeniu skryptów w wierszu poleceń do przechowywania danych w formacie listy. W tym artykule zrozumiemy podstawy tablic w skrypcie bash.

Tworzenie tablic

Aby utworzyć podstawową tablicę w skrypcie bash, możemy użyć deklaracji -A polecenie, po którym następuje nazwa zmiennej tablicowej, którą chcesz podać.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) 

LUB

#!/bin/usr/env bash sport[0]=football sport[1]=cricket sport[2]=hockey sport[3]=basketball 

Wartość elementów może być dowolną liczbą całkowitą, ciągami znaków lub dowolną inną formą danych, zgodnie z potrzebami. Widzimy, że tablica jest deklarowana w skrypcie basha na dwa sposoby: pierwszy wydaje się wygodniejszy i mniej skomplikowany przy deklarowaniu. Jeśli chcemy zadeklarować tablicę za jednym razem, optymalnym wyborem będzie ten pierwszy, ale jeśli elementy mają być dodawane w kawałkach, dobrym wyborem będzie ten drugi.

Drukowanie tablic

Jeśli po zadeklarowaniu tablicy chcemy wyświetlić wszystkie elementy tablicy, możemy skorzystać z symbolu @.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' 

echo '${array_name[@]}' 

Używamy [@] jako indeksu tablicy, aby wyświetlić wszystkie elementy. Wszystkie elementy są drukowane oddzielone spacjami. Cudzysłowy wokół zmiennej rozwijają się i wyświetlają wszystkie elementy tablicy.

Iteracja po tablicy

Aby iterować po jednym elemencie tablicy na raz, możemy użyć pętli i wykonać na niej dowolne operacje.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) for i in ${nums[@]} do echo -e '$i 
' done 

Jak widzimy, użyliśmy pętli for do wydrukowania elementu z tablicy jeden po drugim. Zastosowaliśmy sztuczkę opisaną w poprzedniej sekcji, polegającą na pobraniu wszystkich elementów tablicy i wykonaniu po niej iteracji w pętli for. ${array_name[@]} rozwija się do wszystkich elementów tablicy, a pętla for iteruje po nich jeden po drugim za pomocą iteratora w tym przykładzie zmienna I , wewnątrz ciała pętli for wypisujemy zmienna/iterator tj i w ten sposób iteruj po tablicy.

Uzyskaj liczbę elementów w tablicy

Aby pobrać liczbę elementów tablicy, możemy użyć operatora # przed nazwą tablicy w s w ${array_name[@]}.

 #!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${#sport[@]}' 

W ten sposób zwracamy rozmiar tablicy za pomocą polecenia ${#sport[@]}, # służy do obliczenia rozmiaru zmiennej znajdującej się obok niego, przy użyciu podwójnych cudzysłowów wartość polecenia jest oceniana i otrzymujemy żądaną liczbę elementów w tablicy.

Wstawianie elementu do Array

Aby wstawić element jest dość prosty, musimy ustawić odpowiedni indeks elementu, a następnie wartość elementu, którą chcesz podać.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport[4]='dodgeball' sport[2]='golf' echo '${sport[@]}' 

Dodaliśmy piąty element (czwarty indeks) do tablicy, a także zmodyfikowaliśmy/edytowaliśmy trzeci element tablicy (drugi indeks). The nazwa tablicy[indeks]=wartość to wszystkie sztuczki umożliwiające dodawanie, modyfikowanie lub inicjowanie elementów tablicy.

Elementy do tablicy możemy także dodawać za pomocą operatora +=.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport+=('golf' 'baseball') echo '${sport[@]}' echo 'Size : ${#sport[@]}' 

Jak widać w przykładzie, możemy dodać wiele elementów do tablicy przy minimalnym kodzie. Używamy nazwy_tablicy+=(elementy) do dołączania elementów do tablicy.

Usuwanie elementu z Array

Aby usunąć element z tablicy, możemy użyć polecenia unset. Polecenie pobiera nazwę zmiennej, w naszym przypadku nazwę tablicy oraz indeks tego elementu. Indeks może być również względny, np. -1 oznacza ostatni element, -2 do przedostatniego elementu i tak dalej.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[1] echo '${sport[@]}' echo '${#sport[@]}' 

Jak widzimy, unset nazwa_tablicy[indeks] usunie element o indeksie z tablicy. Ponadto rozmiar tablicy został zmniejszony do 3 z 4, co oznacza, że ​​element został całkowicie usunięty, a nie tylko zastąpiony białymi znakami.

Stosowanie wskaźników względnych

Jeśli użyjemy indeksów takich jak -1, -2 itd., odniesienia do elementów będą rozpoczynać się od ostatniego elementu, dlatego też możemy je usuwać lub modyfikować, zachowując względną kolejność również od tyłu.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[-3] echo '${sport[@]}' 

Jak widzimy, indeks 1 jest również opisywany od tyłu jako -3, dlatego stosunkowo łatwiej jest odwoływać się do pewnych elementów dużej tablicy.

Połącz tablicę

Możemy połączyć (wyjąć miksturę) tablicę, aby przypisać ją lub wydrukować do innej zmiennej/tablicy.

#!/bin/usr/env bash declare -a sport sport+=('football' 'cricket' 'hockey' 'basketball') sport+=('golf' 'baseball') echo 'sport = ${sport[@]}' arr='${sport[@]:1:3}' echo 'arr = ${arr[@]}' 

Wyciągnęliśmy fragment z tablicy sport, czyli element pomiędzy indeksem 1 a 3 włącznie, i przypisaliśmy go do zmiennej arr, która również jest tablicą. Operator @ pobiera wszystkie elementy z tablicy, a następnie możemy połączyć tablicę pomiędzy indeksami 1 i 3, tak aby otrzymać elementy o wartościach 1,2 i 3 (krykiet, hokej i baseball) z tablicy sport.

Zdefiniuj tablicę statyczną i wydrukuj elementy tablicy

#To declare static Array programmingArray=(Java Python Ruby Perl) #In below 2 ways we can print the elements of the static array echo 'Way 1 of printing static values by using [@]:0 - ' ${programmingarray[@]$ echo 'Way 2 of printing static values by using [*]:0 - ' ${programmingarray[*]$ 

Na 2 sposoby możemy wydrukować elementy tablicy statycznej

Wykonanie programu

sh So, we can give as sh arraycheck2.sh # arraycheck2.sh is the name of the script file here 

Przekazywanie argumentów wiersza poleceń w pliku skryptu

#All the array elements are stored in an array called programmingArray programmingArray=('$@') #Index values start from 0 #If we do not specify the index, it will take up the size of first index value echo 'Size of programmingArray at 0th location..:' $(#programmingArray[0]} echo 'Size of programmingArray at 1st location..:' $(#programmingArray[1]} 

Powyższy skrypt można wykonać jako

# Tutaj Java, Python i Ruby są argumentami wiersza poleceń

sh arrayCheck.sh Java Python Ruby 

Kroki wykonania skryptu:

programowanieArray=(Java Python Ruby)

#Java będzie obecna w indeksie 0, jej wielkość można obliczyć w poniższy sposób

${#programmingArray[0]}

Podobnie Python będzie obecny przy pierwszym indeksie, jego wielkość można obliczyć w poniższy sposób

${#programmingArray[1]}

Wyjście:

Iterowanie wartości tablicy za pomocą pętli for

$@ zwróci wszystkie wartości przekazane za pomocą argumentów wiersza poleceń i zostanie zapisane w tablicy.

Można to iterować za pomocą pętli for

declare -a programmingArray=('$@') i=0 for programming in '$@' do echo 'Array value at index ' $i ' : ' $programming i=$((i+1)); done 

Wyjście:

Rzućmy okiem na to, co reprezentuje każdy symbol

Składnia

Wyjście
Arr=()

arr[0]=3 Nadpisz pierwszy element

arr+=(4) Dołącz wartości

str=$(ls) Zapisz wynik ls jako ciąg znaków

arr=( $(ls) ) Zapisz dane wyjściowe ls jako tablicę plików

${arr[@]:s:n} Pobierz n elementów zaczynając od indeksu

#Możemy podać zestaw wartości

lubię to

arr=(jeden dwa trzy)

Aby zainicjować tablicę
${arr[0]} Aby pobrać pierwszy element. Indeks zawsze zaczyna się od 0
${arr[@]} Aby pobrać wszystkie elementy, możemy wykonać iterację w pętli
${!arr[@]} Aby pobrać same indeksy tablicy
${#arr[@]} Aby obliczyć rozmiar tablicy
tablica[2]=3 Aby nadpisać trzeci element, musimy go użyć w ten sposób. Ponieważ indeks zaczyna się od 0, arr[2] jest poprawne.
tablica+=(40) Aby dołączyć wartości, możemy użyć +, a następnie przypisać za pomocą = i dlatego używane jest +=.
str=$(ls) Aby zapisać dane wyjściowe polecenia ls jako ciąg znaków (dla tego wyniku pokazano przykład 4)
arr=( $(ls) ) Aby zapisać dane wyjściowe ls jako tablicę plików (dla tego wyniku pokazano przykład 5)
${arr[@]:s:n} Aby pobrać n elementów zaczynając od indeksu s