Jak utworzyć funkcję bash, która zwraca tablicę

Jak utworzyć funkcję bash, która zwraca tablicę
Na początku może się wydawać, że zwrócenie tablicy z funkcji bash nie jest realistyczne. Biorąc pod uwagę wszystkie korzyści, przydatne może być wywołanie wielu metod konstruowania tablic w celu podziału procesu gromadzenia wszystkich odpowiednich parametrów dla połączenia YAD.

Istnieje wiele powodów, dla których można przywrócić tablicę bash:

  • Zarządzanie żywotnością tablic jest prostsze, ponieważ są one przypisywane lokalnie.
  • W przypadku osiągnięcia na czas, uzyskanie tablic z metod może pomóc.
  • Aby obsługiwać techniki algorytmu dziennika, nazwy metod, które zwracają tablice mogą zostać odrzucone.

Możesz wierzyć, że Bash traci zdolność do zwracania tablic funkcyjnych. Nie jest to jednak właściwe. Możliwe jest przeniesienie wynikającej tablicy do metody przez odniesienie, przyjmując wskazówki od programistów C/C ++. Taka strategia pozwala metodę nadal być wolna od odniesień do zmiennej globalnej. Poniższy artykuł pokazuje jasne przypadki tej sprawy.

Przykład 1: Zwracanie tablicy

Zaloguj się do systemu Linux i otwórz terminal polecenia, aby kontynuować. Utworzymy plik bash o nazwie „Skrypt.sh ”za pomocą dotykać polecenie, aby zwrócić tablicę za pomocą funkcji Bash. Skrypt jest następujący:

skrypt $ dotyk.cii

Możesz wyświetlić nowo utworzony plik w Dom informator. Otwórz ten plik i zapisz dołączony kod do niego według. Tutaj staramy się stworzyć tablicę asocjacyjną za pomocą argumentu w metodzie z dowolnej przepustki listy.

Początkowo stworzyliśmy funkcję bla().

Wewnątrz tego programu usunęliśmy termin „deklaracja”, który jest wstępnie skonfigurowanym poleceniem bash, które pozwala nam zmienić lub dostosowywać atrybuty, metody powłoki rozmazanej do zmiennych i zademonstrować wartości tych atrybutów wewnątrz Rozpiętość naszego terminala poleceń powłoki. Ponadto można go użyć do zdefiniowania długiej zmiennej. Wreszcie służy do definiowania zmiennych.

Dodaliśmy wartość „fooval” do tablicy „ARR”.

Słowo kluczowe „-a” służy do tworzenia Nazwy tablica asocjacyjna, jeśli jest obsługiwana. Musimy użyć listy/tablicy jako zmiennej globalnej, co oznacza, że ​​tylko metoda, a nie skrypt, może wykonać tę akcję.

Stworzyliśmy także kolejną tablicę o nazwie „Myarr” do użycia jako odniesienie. Bash pozwala nazwa względnej zmiennej ARR odmiennej od nazwy względnej zmiennej Myarr.

Następnie w ósmej linii przekazaliśmy tablicę „Myarr” do bashu bla() funkcjonowanie jako odniesienie.

W przeszłości wykorzystaliśmy pętlę „for” do wydrukowania zarówno tablic „ARR”, jak i „Myarr” do bla() funkcjonować.

Teraz sprawdzimy wynik tego kodu. Wykonaj polecenie bash, aby uruchomić powyższy kod. Możesz zobaczyć, że tablica została zwrócona do funkcji, a następnie wydrukowana.

Skrypt $ bash.cii

Przykład 2: Zwracanie kolejnej tablicy

Spójrzmy na kolejny przykład zwracania tablic do funkcji. Otwórz terminal poleceń i utwórz nowy plik o nazwie „OpenVPN.log ”za pomocą dotykać polecenie, jak następuje:

$ Touch OpenVpn.dziennik

Teraz otwórz „OpenVPN.Zaloguj się ”i zapisz następujący tekst w tym pliku, jak pokazano. Zapisz ten plik i zamknij go.

Ponownie otwórz powłokę poleceń i utwórz kolejny plik o nazwie „Skrypt.sh ”, używając dotykać Polecenie do dodania skryptu bash do pliku.

skrypt $ dotyk.cii

Następnie otwórz „Skrypt.plik sh ”i dołącz następujący kod do tego pliku według. Zapisz i zamknij ten plik. Ten skrypt użyje metody odczytu wartości/ciągów z dokumentu i zwraca tablicę:

  • Deklarowanie tablicy: Klienci
  • Przydzielić zwróconą tablicę metody do tablicy klientów
  • Pokaż tablicę: klienci

Spójrzmy teraz szczegółowo na działanie tego skryptu.

  • Oświadczyliśmy globalną gamę „klientów” za pomocą słowa kluczowego „Declare”, a następnie „-a."
  • The ReadArray () Funkcja została zdefiniowana. W tej funkcji zadeklarowaliśmy niektóre zmienne lokalne. Zmienna lokalna „tablica” jest pusta, ale „ja” i „j” zostały zdefiniowane z wartością 0, która ma być używana jako iteratorów.
  • Korzystając z trybu odczytu, odczytujemy tekst z pliku za pomocą iteratorów, aby zwiększyć indeksy.
  • Linia „Klienci [(i ++))]+= $ line;” służy do dołączania linii tekstowych do globalnie zdefiniowanej zmiennej tablicy „klientów”.
  • Następnie „J ++” wskakuje na następny indeks.
  • Zmienna „1 USD” służy do zapisywania i zwrócenia tablicy, która właśnie została utworzona z „OpenVPN.Log ”plik tekstowy.
  • Na zewnątrz funkcji ciąg został ogłoszony jako „$ String” i otrzymał ścieżkę pliku jako wartość.
  • Ten ciąg został przekazany do ReadArray funkcjonować jako odniesienie do tekstu odczytu z tego pliku.
  • Następnie wydrukowano tablicę „klientów”, a cały tekst został wyświetlony w jednym wierszu.
  • Teraz wyświetlimy wiadomość, że tablica nie jest już pusta.
  • Pętla „for” została użyta do konwersji zawartości tablicy „klientów” na typ tablicy i zadeklarowanie indeksu zawartości za pomocą instrukcji „echo” $ i: $ klienci [$ i]."
  • Na koniec wyświetliśmy komunikat i wydrukowaliśmy niektóre konwertowane wartości tablicy osobno jako pojedyncza indeksowana pozycja tablicy.

Sprawdźmy teraz wyjście tego skryptu Bash. Uruchom polecenie bash, aby wykonać „skrypt.plik sh ”. Jak widać, pierwsza instrukcja Echo wydrukuje cały tekst z „OpenVPN.Plik dziennika, który został zapisany w tablicy „klientów” jako jedna linia. Druga instrukcja echo wyświetli komunikat ciąg. Trzecia instrukcja Echo wyświetli tablicę „klientów” w formularzu indeksowanym, ponieważ właśnie została przekonwertowana. Czwarty wyświetli wiadomość ponownie. Ostateczny wyświetli zawartość tablicy „klientów” indywidualnie.

Wniosek

W tym artykule pokazano, jak zwrócić tablice (zwłaszcza tablice asocjacyjne) do funkcji za pomocą wbudowanego polecenia „Deklaruj” z dwoma przykładami. Mam nadzieję, że ten artykuł pomógł ci lepiej zrozumieć ten temat.