Jak tworzyć proste skontlerze w Linux
- 1193
- 61
- Tomasz Szatkowski
Tworzenie skontlerzy jest jedną z najważniejszych umiejętności, które użytkownicy Linux powinni mieć na końcu palców. Skrypty Shell odgrywają ogromną rolę w automatyzacji powtarzających się zadań, które w przeciwnym razie byłyby żmudne linijki według linii.
W tym samouczku podkreślamy niektóre podstawowe operacje scenariuszy powłoki.
1. Utwórz prosty skrypt powłoki
Skrypt powłoki to plik, który zawiera ASCII tekst. Zaczniemy od utworzenia prostego skryptu powłoki i aby to zrobić, użyjemy edytora tekstu. Istnieje wiele edytorów tekstu, zarówno wiersza poleceń, jak i oparte na GUI. Do tego przewodnika użyjemy edytora vim.
Zaczniemy od utworzenia prostego skryptu, który wyświetla „Witaj świecie”Po wykonaniu.
$ vim Hello.cii
Wklej następującą zawartość w pliku i zapisz.
#!/bin/bash # drukuj witaj wiadomość echo „hello świat!"
Przejdźmy do linii skryptu według linii.
- Pierwsza linia -
#!/bin/bash
- jest znany jako nagłówek shebang. Jest to specjalny konstrukt, który wskazuje, jaki program zostanie użyty do interpretacji skryptu. W takim przypadku będzie to grzmotnąć Shell wskazany przez /bin/bash. Istnieją inne języki scenariusze, takie jak Pyton który jest oznaczony przez#!/usr/bin/python3
I Perl którego nagłówek shebang jest oznaczony przez#!/usr/bin/perl
. - Druga linia to komentarz. Komentarz jest stwierdzeniem opisującym, co robi skrypt powłoki i nie jest wykonywany po uruchomieniu skryptu. Komentarze są zawsze poprzedzone znakiem HASH
#
. - Ostatni wiersz to polecenie, które drukuje „Witaj świecie„Wiadomość na terminalu.
Następnym krokiem jest uczynienie skryptu wykonywalnego poprzez przypisanie uprawnienia wykonania za pomocą za pomocą chmod polecenie jak pokazano.
$ chmod +x hello.cii
Na koniec uruchom skrypt powłoki za pomocą jednego z poleceń:
$ bash hello.sh lub $ ./Witam.ciiStwórz skrypt hello świat powłoki
2. Korzystanie z instrukcji warunkowych do wykonywania kodu
Podobnie jak inne języki programowania, Instrukcje warunkowe są używane w skryptach bash do podejmowania decyzji, z niewielką zmiennością w składni. Zamierzamy pokryć Jeśli, Jeśli inaczej, I Elif Instrukcje warunkowe.
Przykład tylko stwierdzenia IF
Jeśli Oświadczenie można użyć do testowania pojedynczych lub wielu warunków. Zaczniemy od fundamentalnego użycia Jeśli Oświadczenie o przetestowaniu pojedynczego stanu. Jeśli Oświadczenie jest zdefiniowane przez Jeśli… fi
Bloki.
Jeśli polecenie, instrukcja fi
Spójrzmy na skrypt powłoki poniżej.
#!/bin/bash echo „Wprowadź wynik” odczyt x, jeśli [[$ x == 70]]; Potem echo dobrą robotę!„Fi
Powyższy skrypt powłoki monituje użytkownika do dostarczenia wyniku, który jest następnie przechowywany w zmiennej X. Jeśli wynik odpowiada 70, Skrypt zwraca dane wyjściowe „Dobra robota!". Operator porównawczy ==
służy do testowania, czy wynik został wprowadzony, który jest przechowywany w zmiennej X, jest równa 100.
Inni operatorzy porównawcze, których możesz użyć, obejmują:
-Eq
- Równy-ne
- Nie równe-Lt
- Mniej niż-le
- Mniejszy lub równy-Lt
- Mniej niż-ge
- Większe bądź równe
Na przykład If-Satement blok poniżej drukujePracuj ciężej„Jeśli wynik wejściowy jest jak dowolna wartość niższa niż 50.
jeśli [[$ x -lt 50]]; Następnie echo pracuj ciężej!„FiJeśli instrukcja w skrypcie powłoki
Przykład instrukcji IF-Else
W sytuacjach, w których masz 2 możliwe wyniki: - czy to lub tamtej - instrukcja IF -Else jest przydatna.
Jeśli polecenie, instrukcja1 else instrukcja 2 fi
Poniższy skrypt odczytuje wynik wejściowy i sprawdza, czy jest on większy, czy równy 70.
Jeśli wynik jest większy lub równy 70, Dostajesz 'Świetna robota, minąłeś!' wiadomość. Jeśli jednak wynik spadnie poniżej 70, wyjście 'Oblałeś'zostanie wydrukowane.
#!/bin/bash echo „Wprowadź wynik” odczyt x, jeśli [[$ x -ge 70]]; Potem echo świetną robotę, minąłeś!„else echo” nie udało ci się ”instrukcja IF-Else w skrypcie powłoki
Przykład instrukcji IF-ELIF-ELSE
W scenariuszach, w których istnieje wiele warunków i różnych wyników, If-Elif-Else Stwierdzenie jest używane. To stwierdzenie ma następujący format.
Jeśli warunek1, to instrukcja 1 elif warunek2, a następnie instrukcja 2 else instrukcja 3 fi Fi
Na przykład mamy skrypt do loterii, który sprawdza, czy wprowadzony numer jest 90, 60 Lub 30.
#!/bin/bash echo „Wprowadź wynik” odczyt x, jeśli [[$ x -eq 90]]; Następnie echo „Wygrałeś pierwszą nagrodę” Elif [[$ x -eq 60]]; Następnie echo „Wygrałeś drugą nagrodę” Elif [[$ x -eq 30]]; Następnie echo „Wygrałeś drugą nagrodę” echo „Proszę, spróbuj ponownie” FIInstrukcja IF-ELIF-ELSE
3. Korzystanie z instrukcji IF i logiki
Możesz użyć Jeśli stwierdzenie obok I Operator logiczny do wykonania zadania, jeśli spełnione są dwa warunki. &&
Operator służy do oznaczenia I logika.
#!/bin/bash echo „Wprowadź swój użytkownik_id” Następnie echo „login udane” echo „Niepowodzenie logowania” FI
5. Korzystanie z instrukcji IF lub logiki
Podczas korzystania z LUB logika, która jest reprezentowana przez ||
symbol, jeden z warunków musi być zadowolony ze skryptu, aby dać oczekiwane wyniki.
#!/bin/bash echo „Wprowadź numer odczytu liczby losowej”, jeśli [[(numer -eq 55 || numer -eq 80)]]; Następnie Gratulacje! Wygrałeś „else echo” przepraszam, spróbuj ponownie ”fiJeśli instrukcja lub logika
Użyj konstrukcji zapętlania
Grzmotnąć Pętle Pozwól użytkownikom wykonywać serię zadań, aż do osiągnięcia określonego wyniku. Przydaje się to w wykonywaniu powtarzających się zadań. W tej sekcji będziemy rzucić okiem na niektóre pętle, które można również znaleźć w innych językach programowania.
Podczas pętli
To jedna z najłatwiejszych pętli do pracy. Składnia jest dość prosta:
Podczas gdy polecenia wykonane
Poniższa pętla While wymienia wszystkie liczby od 1 do 10 po wykonaniu.
#!/bin/bash # prosty licznik pętli = 1, podczas gdy [$ Counter -le 10] do echo $ licznik ((licznik ++))
Rozłóżmy pętlę While:
Zmienna lada jest inicjowany do 1. I chociaż zmienna jest mniejsza lub równa 10, Wartość licznika zostanie zwiększona do momentu spełnienia warunku. Linia Echo $ licznik Drukuje wszystkie liczby od 1 do 10.
Podczas pętli w skrypcie ShellDla pętli
Jak czas pętla, A dla pętli służy do wykonywania kodu iteracyjnego. I.mi. Powtórz wykonywanie kodu tak wiele razy, jak to możliwe, zdefiniowane przez użytkownika.
Składnia to:
dla var in 1 2 3 4 5 n do command1 Command2 Dokonane
dla pętli poniżej itera 1 do 10 i przetwarza ich wartości na ekranie.
Dla pętli w skrypcie ShellLepszym sposobem na osiągnięcie tego jest zdefiniowanie zasięgu za pomocą podwójnych klamrów Jak pokazano zamiast pisać wszystkie liczby.
#!/bin/bash # określa zakres w pętli dla numeru w 1… 10 do echo $ num gotowe
Parametry pozycji BASH
Parametr pozycyjny jest specjalną zmienną, do której można się odwoływać w skrypcie, gdy wartości są przekazywane na powładzie, ale nie można jej przypisać. Parametry pozycyjne działają z 0 $ 1 $ 2 $ 3… Do 9 USD. Poza 9 USD wartość, parametry muszą być zamknięte w kręconych nawiasach e.G $ 10, $ 11… i tak dalej.
Podczas wykonywania skryptu, pierwszy parametr pozycyjny 0 USD przyjmuje nazwę skryptu powłoki. 1 USD Parametr przyjmuje pierwszą zmienną, która jest przekazywana na terminalu, 2 USD zajmuje drugie, 3 USD trzeci i tak dalej.
Utwórzmy test skryptu.sh jak pokazano.
#!/bin/bash echo „Nazwa skryptu to:„ $ 0 echo ”Moje imię to:„ 1 $ echo ”Moje drugie imię to:" 2 $
Następnie wykonaj skrypt i podaj pierwsze i drugie imię jako argumenty:
# Test Bash.sh James KiarieParametr pozycyjny BASH
Ze wyjścia widzimy, że pierwszą drukowaną zmienną jest nazwa skryptu powłoki, w tym przypadku, test.cii. Następnie nazwy są wydrukowane odpowiadające parametrom pozycyjnym zdefiniowanym w skrypcie powłoki.
Parametry pozycyjne są przydatne, ponieważ pomagają dostosować wprowadzane dane zamiast jawnego przypisywania wartości do zmiennej.
Kody wyjścia z poleceń powłoki
Zacznijmy od odpowiedzi na proste pytanie, co to jest Kod wyjściowy?
Każde polecenie wykonane na powładzie przez skrypt użytkownika lub powłoki ma status wyjścia. Status wyjścia to liczba całkowita.
Status wyjścia 0 sugeruje, że polecenie wykonane pomyślnie bez żadnych błędów. Wszystko między 1 do 255 pokazuje, że polecenie nie powiodło się lub nie wykonało pomyślnie.
Aby znaleźć status wyjścia polecenia, użyj $?
Zmienna powłoki.
Status wyjścia 1 punktów do ogólnego błędu lub wszelkich niedopuszczalnych błędów, takich jak edycja plików bez uprawnień sudo.
Status wyjścia 2 punktów do niepoprawnego użycia polecenia lub wbudowanej zmiennej powłoki.
Status wyjścia 127 wskazuje na nielegalne polecenie, które zwykle daje 'nie znaleziono polecenia' błąd.
Znajdź status wyjścia dowodzeniaWyjście przetwarzania poleceń powłoki w skrypcie
W skryptach Bash możesz przechowywać wyjście polecenia w zmiennej do przyszłego użycia. Jest to również określane jako podstawienie dowództwa powłoki i można je osiągnąć w następujący sposób.
zmienna = $ (command) lub zmienna = $ (/ścieżka/do/polecenie) lub zmienna = $ (argument polecenia 1 argument 2…)
Na przykład możesz przechowywać data polecenie w zmiennej nazywanej Dzisiaj i zadzwoń do skryptu powłoki, aby ujawnić bieżącą datę.
#!/bin/bash dzisiaj = $ (data) echo „Dzisiaj jest $ dzisiaj”Data wydruku za pomocą skryptu powłoki
Weźmy kolejny przykład. Załóżmy, że chcesz znaleźć prawidłowych użytkowników logowania w systemie Linux. Jak byś się z tym pogodzić? Po pierwsze, lista wszystkich użytkowników (zarówno użytkowników systemu, procesu i logowania) jest przechowywana w /etc/passwd plik.
Aby wyświetlić plik, musisz użyć polecenia CAT. Aby jednak zawęzić się, aby zalogować użytkowników, użyj polecenia GREP, aby wyszukać użytkowników z /bin/bash atrybut i użyj Cut -C 1-10 polecenie, jak pokazano, aby wyświetlić pierwsze 10 znaków nazwisk.
Przechowyliśmy polecenie CAT do login_users zmienny.
#!/bin/bash login_users = $ (cat/etc/passwd | grep/bin/bash | cut -c 1-10) echo 'To jest lista użytkowników logowania: echo $ login_usersLista zalogowana użytkownikami
To sprawia, że nasz samouczek na temat tworzenia prostych skontleur do końca. Mamy nadzieję, że uznałeś to za cenne.
- « 8 górnych serwerów proxy typu open source dla Linux
- Jak zainstalować WordPress z Nginx w Ubuntu 20.04 »