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 |