Jak używać BASH dla pętli



Wypróbuj Nasz Instrument Do Eliminowania Problemów

Jedna z najbardziej podstawowych sztuczek podczas tworzenia skryptów bash polega na tworzeniu pętli, dzięki czemu można kilka razy automatycznie wykonywać określone zadanie. Ostatecznie pętla osiągnie z góry określony warunek testu i nagle przestanie działać. Pętle takie jak te będą działały doskonale w bashu w systemie Linux i macOS, a także w powłoce bash w systemie Windows 10, a nawet w różnych powłokach we FreeBSD. Oczywiście możesz napisać dowolne polecenie w dowolnej pętli i utrzymywać dowolny proces w dowolnym czasie. Chociaż napiszemy kilka niezwykle prostych pętli, możesz wykorzystać te umiejętności do tworzenia dowolnych rodzajów skryptów.



Istnieje wiele sposobów na rozpoczęcie pisania skryptu, ale w tej dyskusji założymy, że otworzyłeś wiersz poleceń albo wyszukując terminal w Dash, klikając go w menu KDE, MATE, LX lub Whisker lub przytrzymując jednocześnie Ctrl, Alt i T. Chociaż będziemy omawiać vi / vim i nano jako edytory, kwestia tego, którego edytora użyć, jest dość osobista i możesz pracować z czymkolwiek czujesz się komfortowo.



Metoda 1: pętla do momentu

Być może najbardziej podstawową pętlą w bashu jest pętla aż. Będzie wykonywał polecenia, dopóki ustawiony warunek testu nie stanie się prawdziwy. Zakładamy, że użyłeś nano lub vi do otwarcia nieistniejącego pliku o nazwie till.sh i jesteś gotowy do wstawienia do niego nowego tekstu. Po prostu stworzymy coś, co liczy do 20 w Twoim terminalu, aby na początku było to łatwe.



Zacznij od wpisania:

#! / bin / bash

n = 0



do [$ n -gt 20]

zrobić

echo $ n

((n ++))

Gotowe

Jeśli używasz nano, zapisz go, przytrzymując Ctrl, a następnie naciskając O, a na koniec X, aby wyjść. Użytkownicy vi będą chcieli nacisnąć klawisz Escape, a następnie wpisz: wq, aby zapisać i zakończyć.

Następny typ chmod + x aż do pętli w monicie, aby uczynić go wykonywalnym, a następnie wpisz ./untilLoop aby go uruchomić. Po uruchomieniu pętla będzie wypisywać nowe liczby na twoim terminalu, aż zmienna n osiągnie 20.

Nawiasem mówiąc, pierwsza linia informuje środowisko, którą powłokę załadować podczas pracy z tymi skryptami. Niektórzy programiści zalecają używanie tylko #! / Bin / sh, aby upewnić się, że twój skrypt jest zgodny z określonymi standardami POSIX, ale te proste skrypty nie powinny mieć żadnego problemu z działaniem w większości nowoczesnych systemów.

Metoda 2: pętla for

Pętla for bada każdy element z danej listy, a następnie wykonuje określony zestaw poleceń na tej liście. Stworzymy taki, który wypisze nazwy niektórych systemów operacyjnych, ale pamiętaj, że możesz zrobić cokolwiek z tym, jeśli chcesz.

Wpisz albo nano forLoop lub my forLoop w wierszu polecenia i zacznij wprowadzać następujący skrypt. Użytkownicy vi będą musieli przejść do trybu wstawiania, zanim to zrobią.

#! / bin / bash

unices = „GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix”

dla unixa w $ unices

zrobić

echo $ unix

Gotowe

Zapisz plik ponownie, używając metody Ctrl + O, a następnie Ctrl + X w nano lub Esc then: wq metoda w vi przed wydaniem polecenia chmod + x forLoop aby był wykonywalny. Gdy już to zrobisz, uruchom go, wpisując ./dla pętli po monicie. Pętla for wymusza na komendzie echo pracę po kolei na każdym z elementów zmiennej unices. Możesz ponownie zastąpić tę listę dowolnym argumentem i zastąpić echo dowolnym poleceniem, aby zautomatyzować długie procesy.

Metoda 3: pętla while

Rozpocznij edycję trzeciego pliku o nazwie whileLoop za pomocą nano, vi lub dowolnego innego edytora, którego chcesz użyć. Jeśli wolisz używać graficznego edytora tekstu, możesz to zrobić również z każdym z tych projektów, o ile upewnisz się, że plik znajduje się w tym samym katalogu, w którym pracujesz z poziomu wiersza poleceń .

Wewnątrz tego pliku będziesz chciał dodać linie:

#! / bin / bash

n = 0

podczas gdy [$ n -le 20]

zrobić

echo $ n

((n ++))

Gotowe

Zapisz plik w ten sam sposób, w jaki zapisałeś inne, a następnie zamknij edytor tekstu. Po wyjściu wydaj polecenie chmod + x whileLoop aby umożliwić ci jego wykonanie, a następnie uruchomienie ./whileLoop aby go uruchomić. Zobaczysz te same dane wyjściowe, które wyszły ze skryptu tillLoop z pierwszej metody, ponieważ liczy od 0 do 20 w ciągu najprawdopodobniej ułamka sekundy.

To doskonały dowód na to, że podczas pracy z pętlami w ten sposób istnieje więcej niż jeden sposób. Chociaż technicznie nie ma złego sposobu, aby to zrobić, prawdopodobnie natkniesz się na autorów skryptów, którzy twierdzą, że powinieneś pisać skrypty bliżej sposobu, w jaki język programowania C robi rzeczy lub alternatywnie, inni mogą sugerować, że nie powinieneś tego robić. Szczerze mówiąc, prawdopodobnie istnieje wiele poprawnych sposobów rozwiązania problemu.

Możesz usunąć swoje skrypty, gdy skończysz z nimi ćwiczyć.

3 minuty czytania