BASH (co oznacza Bourne Again Shell) to język skryptowy używany w większości systemów operacyjnych opartych na systemie Linux i UNIX.
Komendy BASH można uruchamiać w oknie terminala jeden po drugim lub można dodać polecenia do pliku tekstowego, aby utworzyć skrypt powłoki.
Wielką zaletą pisania skryptów powłoki jest to, że możesz uruchamiać je ponownie. Na przykład wyobraź sobie, że musisz dodać użytkownika do systemu, ustawić swoje uprawnienia i zarządzać ich środowiskiem początkowym. Możesz zapisać komendy na kartce papieru i uruchamiać je podczas dodawania nowych użytkowników lub możesz napisać pojedynczy skrypt i po prostu przekazać parametry do tego skryptu.
Języki skryptowe, takie jak BASH, mają podobne konstrukcje programistyczne, co inne języki. Na przykład można użyć parametrów importu, aby uzyskać dane wejściowe z klawiatury i zapisać je jako zmienne. Następnie można uzyskać skrypt do wykonania określonej akcji na podstawie wartości parametrów wejściowych.
Kluczową częścią każdego języka programowania i skryptowania jest możliwość ponownego uruchomienia tego samego fragmentu kodu.
Istnieje wiele sposobów na powtórzenie kodu (zwane również pętlami). W tym przewodniku pokażemy, jak napisać pętlę "for".
ZA dla Pętla powtarza pewną sekcję kodu w kółko. Są użyteczne, aby szereg poleceń mógł działać, dopóki określony warunek nie zostanie spełniony, po czym przestaną.
W tym przewodniku pokażemy pięć sposobów użycia pętli for w skrypcie BASH.
Przed rozpoczęciem pracy
Zanim zaczniesz z przykładami pętli for, musisz otworzyć okno terminala i wykonać następujące kroki:
-
Wchodzić Skrypty mkdir (dowiedz się więcej o mkdir tutaj).
-
Wchodzić skrypty cd (to zmienia katalog na skrypty ).
-
Wchodzić nano examplen.sh (gdzie n to jest przykład, nad którym pracujesz).
-
Wprowadź skrypt.
-
naciśnij CTRL + O zapisać i CTRL + X do wyjścia.
-
Biegać bash examplen.sh (ponownie, z n jako przykład, z którym pracujesz).
Jak przechodzić przez listę
#! / bin / bashfor liczba w 1 2 3 4 5doecho $ numberdoneexit 0
Sposób użycia pętli "for" w BASH różni się nieco od tego, w jaki sposób większość innych języków programowania i skryptów obsługuje pętle "for". Przerwijmy skrypt. W pętli BASH "for" wszystkie instrukcje między robić i Gotowe wykonywane są raz dla każdego elementu na liście. W powyższym przykładzie lista jest wszystkim, co przychodzi po słowie w (tj. 1 2 3 4 5). Za każdym razem, gdy pętla jest iterowana, następna wartość na liście jest wstawiana do zmiennej określonej po słowie "dla" . W powyższej pętli wywoływana jest zmienna numer . Instrukcja echo służy do wyświetlania informacji na ekranie. Dlatego ten przykład przyjmuje liczby od 1 do 5 i przesyła je kolejno do ekranu: Kłopot z powyższym przykładem jest taki, że jeśli chcesz przetworzyć większą listę (powiedzmy od 1 do 500), najpierw trzeba będzie wpisać wszystkie liczby. To prowadzi nas do drugiego przykładu, który pokazuje, jak określić punkt początkowy i końcowy: #! / bin / bashfor number w {1..10} doecho "$ number" doneexit 0
Zasady są w zasadzie takie same. Wartości po słowie " w" tworzą listę do iteracji, a każda wartość na liście jest umieszczana w zmiennej (tj. liczbie), a za każdym razem, gdy pętla się iteruje, robić i Gotowe są wykonywane. Główna różnica polega na sposobie uformowania listy. Kręcone nawiasy {} w zasadzie oznaczają zakres, a zakres w tym przypadku wynosi od 1 do 10 (dwie kropki oddzielają początek i koniec zakresu). W związku z tym ten przykład przebiega przez każdą liczbę od 1 do 10 i wyświetla numer na ekranie w następujący sposób: Ta sama pętla mogłaby zostać napisana w ten sposób, ze składnią identyczną jak w pierwszym przykładzie: dla liczby w 1 2 3 4 5 6 7 8 9 10 W poprzednim przykładzie pokazano, jak przechodzić między punktem początkowym i końcowym, więc teraz przyjrzymy się, jak pominąć liczby w zakresie. Wyobraź sobie, że chcesz zapętlić od 0 do 100, ale wyświetlaj tylko co dziesiątą liczbę. Poniższy skrypt pokazuje, jak to zrobić: #! / bin / bashfor number w {0..100..10} doecho "$ number" doneexit 0
Zasady są w zasadzie takie same. Istnieje lista, zmienna i zestaw instrukcji do wykonania pomiędzy robić i Gotowe . Lista tym razem wygląda następująco: {0..100..10}. Pierwsza cyfra to 0, a końcowa - 100. Trzecia liczba (10) to liczba pozycji na liście, które zostaną pominięte. Powyższy przykład wyświetla następujący wynik: Sposób zapisu pętli BASH jest nieco dziwny w porównaniu do innych języków programowania. Możesz jednak napisać pętlę for w stylu podobnym do języka programowania C, na przykład: #! / bin / bashfor ((numer = 1; numer <100; numer ++)) {if (($ numer% 5 == 0)) thenecho "$ numer jest podzielny przez 5" fi} zamknij 0
Pętla rozpoczyna się od ustawienia numeru zmiennej na 1 (liczba = 1 ). Pętla będzie kontynuowała iterowanie, podczas gdy wartość liczby będzie mniejsza niż 100 ( liczba <100 ). Wartość numer zmienia się dodając 1 do niego po każdej iteracji ( liczba ++ ). Wszystko pomiędzy nawiasami klamrowymi jest wykonywane przez każdą iterację pętli. Bit między nawiasami klamrowymi sprawdza wartość a numer , dzieli go na 5, a resztę porównuje do 0. Jeśli pozostała wartość wynosi 0, liczba jest podzielna przez 5, a następnie wyświetlana na ekranie. Na przykład: Jeśli chcesz zmienić rozmiar kroku iteracji, możesz zmienić sekcję ++, jaka ma być liczba = liczba + 2 , liczba = liczba + 5 , lub liczba = liczba + 10 itp. Można to dodatkowo zredukować do liczba + = 2 lub liczba + = 5 . Dla pętli może zrobić więcej niż iterować listy liczb. W rzeczywistości możesz użyć wyjścia innych poleceń jako listy. Poniższy przykład pokazuje, jak konwertować pliki audio z MP3 na WAV: #! / bin / bashdla pliku w ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" done
Lista w tym przykładzie to każdy plik z rozszerzeniem .MP3 w bieżącym folderze, a zmienną jest a plik . The mpg polecenie konwertuje plik MP3 na WAV. Prawdopodobnie jednak musisz najpierw zainstalować to za pomocą menedżera pakietów.
Pętla między punktem początkowym i końcowym
Jak pominąć liczby w zakresie
Bardziej tradycyjne szukanie pętli
Praktyczny przykład