Jak tworzyć proste skontlerze w Linux

Jak tworzyć proste skontlerze w Linux

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.cii 
Stwó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.

Jeśli instrukcja w skrypcie powłoki

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!„Fi 
Jeś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” FI 
Instrukcja 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 ”fi 
Jeś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 Shell

Dla 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 Shell

Lepszym 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 Kiarie 
Parametr 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 dowodzenia

Wyjś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_users 
Lista zalogowana użytkownikami

To sprawia, że ​​nasz samouczek na temat tworzenia prostych skontleur do końca. Mamy nadzieję, że uznałeś to za cenne.