Skrypty Bash – Wprowadzenie do Bash i skryptów Bash

Skrypty Bash – Wprowadzenie do Bash i skryptów Bash

Bash jest interpreterem wiersza poleceń lub powłoką Unix i jest szeroko stosowany w systemie operacyjnym GNU/Linux. Został napisany przez Briana Jhana Foxa. Jest używana jako domyślna powłoka logowania w większości dystrybucji Linuksa. Skrypty służą do automatyzacji wykonywania zadań, dzięki czemu ludzie nie muszą ich wykonywać indywidualnie. Skrypty Bash to świetny sposób na automatyzację różnych typów zadań w systemie. Programiści mogą uniknąć wykonywania powtarzalnych zadań, korzystając ze skryptów bash.

Skrypty Bash obsługują zmienne, instrukcje warunkowe i pętle, podobnie jak języki programowania. Poniżej znajdują się niektóre zastosowania skryptów Bash –

Spis treści

Zastosowania skryptów Bash:

  • Manipulowanie plikami
  • Wykonywanie rutynowych zadań, takich jak operacja tworzenia kopii zapasowych
  • Automatyzacja

Poniżej podano zalety używania skryptów Bash –

Zalety skryptów Bash:

  • To jest proste.
  • Pomaga unikać wykonywania powtarzalnych zadań
  • Łatwy w użyciu
  • Często wykonywane zadania można zautomatyzować
  • Sekwencję poleceń można uruchomić jako pojedyncze polecenie.

Wady skryptów Bash podano poniżej:

Wady skryptów Bash:

  • Każdy błąd podczas pisania może być kosztowny.
  • Nowy proces uruchamiany dla prawie każdego wykonanego polecenia powłoki
  • Niska prędkość wykonywania
  • Problemy ze zgodnością pomiędzy różnymi platformami

Jak pisać skrypty Bash?

Aby napisać skrypt Bash, wykonamy następujące kroki:

  • Najpierw utworzymy plik z rozszerzeniem .sh.
  • Następnie zapiszemy w nim skrypty bash
  • Następnie udzielimy pozwolenia na jego wykonanie.

Do utworzenia i zapisania pliku z rozszerzeniem .sh możemy się posłużyć gedit Edytor tekstu. Poleceniem będzie -

gedit scriptname.sh 

Pierwszą linią naszego pliku skryptu będzie –

#!/bin/bash 

To powie systemowi, aby użył Bash do wykonania. Wtedy będziemy mogli napisać własne scenariusze.

Zapiszmy prosty skrypt, który wypisze kilka linii w terminalu. Kod będzie taki –

#!/bin/bash echo 'Hello, techcodeview.com' 

Teraz zapiszemy plik i udzielimy mu pozwolenia na wykonanie. Aby to zrobić, użyj następującego polecenia –

chmod +x scriptname.sh 

Następnie, aby wykonać następujący skrypt, użyjemy następującego polecenia –

./scriptname.sh 

Oto obrazowy obraz powłoki terminala po wykonaniu powyższych poleceń w następujący sposób:

Tutaj nazwa pliku skryptu to gfg.sh.

Teraz możemy także pisać bardziej skomplikowane polecenia przy użyciu skryptów Bash. Oto przykład poniżej, w którym używamy instrukcji warunku –

Przykładowy skrypt:

#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi 

Wyjście:

You cannot vote 

Oto obrazowy obraz powłoki terminala po wykonaniu powyższego skryptu w następujący sposób:

W powyższy sposób możemy wykonać wiele poleceń Bash jednocześnie.

Przyjrzyjmy się teraz innym ważnym koncepcjom związanym ze skryptami Bash.

Nazwy plików i uprawnienia

W powyższym przykładzie zapisaliśmy plik za pomocą gfg.sh name, a także pod warunkiem uprawnienia do wykonywania przy użyciu chmod Komenda. Teraz zrozumiemy, dlaczego to zrobiliśmy.

Pisząc skrypty bashowe powinniśmy zapisać nasz plik z rozszerzeniem .sh, aby system Linux mógł go wykonać. Kiedy po raz pierwszy tworzymy plik z rozszerzeniem .sh, nie ma on żadnych uprawnień do wykonywania, a bez uprawnień do wykonywania skrypt nie będzie działać. Dlatego powinniśmy zapewnić mu uprawnienia do wykonywania za pomocą chmod Komenda.

Nazwa pliku skryptu bash może być dowolna, ale zgodnie z konwencją zaleca się używanie wężowych liter ( my_bash_script.sh ) lub łączników ( my-bash-script.sh ) do nazywania pliku skryptu.

Zmienne

Możemy używać zmiennych w skryptach bash. Poniżej znajduje się przykładowy program pozwalający zrozumieć użycie zmiennych w skryptach Bash.

Przykładowy skrypt:

Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age' 

Dane wyjściowe zmiennych:

The name is SATYAJIT GHOSH and Age is 20 

Zatem tutaj zadeklarowano dwie zmienne Nazwa i jeszcze jeden Wiek. Zmienne te są dostępne za pomocą $Name i $Age. Oznacza to, że możemy zadeklarować zmienną w skrypcie bash za pomocą Nazwa Zmiennej=Wartość i możesz uzyskać do niego dostęp za pomocą $NazwaZmiennej. Oto obrazowy obraz powłoki terminala po wykonaniu powyższego skryptu w następujący sposób:

W skryptach Bash występują dwa typy zmiennych. Konwencjonalnie, jeśli zmienna jest zadeklarowana wewnątrz funkcji, to zazwyczaj jest to a zmienna lokalna i jeśli jest zadeklarowany na zewnątrz, to jest to a zmienna globalna . W przypadku skryptu bash koncepcja ta jest nieco inna, tutaj każda zmienna, niezależnie od tego, czy jest zapisana wewnątrz funkcji, czy domyślnie poza nią, jest zmienną globalną. Jeśli chcemy utworzyć zmienną lokalną, musimy użyć słowa kluczowego local.

Notatka: Najlepszą praktyką jest zawsze używanie zmiennej lokalnej wewnątrz funkcji, aby uniknąć niepotrzebnego zamieszania.

Przykład tego samego podano poniżej –

Przykładowy skrypt:

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3' 

Dane wyjściowe zmiennych lokalnych i globalnych:

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry 

W powyższym przykładzie zmienna var2 jest zmienną lokalną, więc gdy uzyskujemy do niej dostęp z funkcji, wszystko działa dobrze, ale gdy próbujemy uzyskać do niej dostęp poza funkcją, na wyjściu pojawia się pusty wynik.

Z drugiej strony, w przeciwieństwie do języków programowania, mimo że zmienna var3 jest zdefiniowana wewnątrz funkcji, nadal zachowuje się jak zmienna globalna i można uzyskać do niej dostęp poza funkcją. Poniżej przedstawiono powłokę terminala po wykonaniu skryptu –

Wejście i wyjście

Dane wejściowe i wyjściowe to podstawowe pojęcia w skryptach powłoki. Skrypt może przyjmować jedno lub więcej danych wejściowych i może również generować zero lub wiele wyników. Może nawet powodować pewne błędy. Wyjaśnijmy to na przykładzie –

Przykładowy skrypt:

echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$nazwa pliku echo 'Utworzono plik' fi 

Wyjście wejścia i wyjścia:

Pierwszy raz:

Enter filename geeks.txt Hello Geek File created 

Drugi raz:

Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek 

Zatem w powyższym przykładzie po raz pierwszy skrypt nie mógł znaleźć żadnego pliku o tej nazwie i wykonywany jest blok else. Utworzył plik i umieścił w nim pewne dane. Kiedy uruchomimy go drugi raz z tą samą nazwą pliku, znajdzie on plik. Czy zatem blok if zostanie wykonany i wyświetli zawartość pliku. Odczytanie zawartości pliku jest traktowane jako wejście i przy pierwszym umieszczeniu danych w pliku, uważa się, że jest to wyjście. Tutaj użyliśmy > do przechowywania treści w pliku. The > notacja służy do przekierowania standardowe wyjście do pliku. Z drugiej strony możemy skorzystać 2> notacja do przekierowania stderr i &> aby przekierować zarówno stdout, jak i stderr.

Poniżej znajduje się obrazowy obraz powłoki terminala po wykonaniu następującego skryptu –

Funkcje

W programowaniu funkcja to blok kodu, który wykonuje pewne zadania i można ją wywoływać wielokrotnie w celu wykonania zadań. Najprostszy przykład użycia funkcji w skryptach Bash można podać jako –

Przykładowy skrypt:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction 

Wyjście funkcji:

Hello World from techcodeview.com 

Powyższy przykład pokazuje funkcję, która po wywołaniu wyświetla coś.

Zatem podstawowa składnia pisania funkcji w skrypcie Bash będzie następująca:

Składnia funkcji:

#for defining function_name(){ commands ..... } function_name # for calling 

Oprócz tego możemy mieć także funkcje z przekazywanymi argumentami i zwracającymi wartościami.

Podejmowanie decyzji

W programowaniu podejmowanie decyzji jest jedną z ważnych koncepcji. Programista zapewnia jeden lub więcej warunków wykonania bloku kodu. Jeśli warunki zostaną spełnione, wówczas te bloki kodów zostaną wykonane.

W skryptach powłoki używane są dwa typy instrukcji decyzyjnych. Oni są -

1. Instrukcja if-else:

Instrukcja if else jest instrukcją warunkową. Można go użyć do wykonania dwóch różnych kodów w zależności od tego, czy dany warunek jest spełniony, czy nie.

W instrukcji if-else występuje kilka odmian. Oni są -

  • jeśli-fi
  • jeśli-inaczej-fi
  • if-elif-else-fi
  • zagnieżdżone if-else

Składnia najprostszej będzie następująca –

Składnia instrukcji If-else:

if [ expression ]; then statements fi 

Przykładowy skrypt:

Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi 

Dane wyjściowe instrukcji if-else:

His name is Satyajit. It is true. 

W powyższym przykładzie podczas sprawdzania warunku nazwa pasuje i warunek staje się prawdziwy. W związku z tym blok kodu znajdujący się w bloku if zostanie wykonany. Jeśli nazwa nie będzie zgodna, wynik nie będzie wyświetlany. Poniżej znajduje się obrazowy obraz powłoki terminala po wykonaniu następującego skryptu –

2. oświadczenie z danej sprawy:

case-sac działa w zasadzie tak samo jak instrukcja switch w programowaniu. Czasami, jeśli musimy sprawdzić wiele warunków, użycie instrukcji if może się skomplikować. W takich momentach możemy użyć instrukcji case-sac. Składnia będzie taka –

Składnia instrukcji case-sac:

case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac 

Przykładowy skrypt:

Name='Satyajit' case '$Name' in #case 1 'Rajib') echo 'Profession : Software Engineer' ;; #case 2 'Vikas') echo 'Profession : Web Developer' ;; #case 3 'Satyajit') echo 'Profession : Technical Content Writer' ;; esac 

Dane wyjściowe instrukcji case-sac:

Profession : Technical Content Writer 

W powyższym przykładzie instrukcja case-sac wykonała instrukcję, która jest częścią dopasowanego wzorca, tutaj „Nazwa”. Poniżej znajduje się obrazowy obraz powłoki terminala po wykonaniu następującego skryptu –

Porównania ciągów i liczb

Porównanie ciągów oznacza, że ​​w skrypcie powłoki możemy podejmować decyzje, dokonując porównań także w obrębie ciągów. Oto tabela opisowa ze wszystkimi operatorami –

Operator Opis
== Zwraca wartość true, jeśli ciągi znaków są równe
!= Zwraca wartość true, jeśli ciągi nie są równe
-N Zwraca wartość true, jeśli testowany ciąg nie ma wartości null
-z Zwraca wartość true, jeśli testowany ciąg znaków ma wartość null

Operatory arytmetyczne służą do sprawdzania warunków arytmetycznych. Na przykład mniejszy niż, większy niż, równy itp. Oto tabela opisowa ze wszystkimi operatorami –

Operator Opis
-równ Równy
-ge Większe lub równe
-gt Lepszy niż
-the Mniejszy lub równy
-lt Mniej niż
- Jest Nie równe

Poniżej znajduje się prosty przykład tego samego –

Przykładowy skrypt:

if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi 

Dane wyjściowe porównań łańcuchowych i numerycznych:

Equal same 

W tym przykładzie pierwszy (-eq) to porównanie numeryczne sprawdzające równość. Drugi ( == ) również sprawdza równość, ale w ciągach znaków. Poniżej znajduje się obrazowy obraz powłoki terminala po wykonaniu następującego skryptu –

Więcej na temat tej koncepcji dowiemy się w kolejnych artykułach.

Wniosek

W tym artykule omawiamy skrypty Bash, które odgrywają istotną rolę w automatyzacji zadań w środowisku Linux. Jako interpreter wiersza poleceń, Bash oferuje programistom prostotę i łatwość obsługi w zakresie tworzenia skryptów usprawniających rutynowe operacje, manipulowanie plikami i wykonywanie złożonych zadań. Chociaż skrypty Bash mogą zwiększać produktywność poprzez unikanie powtarzalnych działań i wydajne wykonywanie sekwencji poleceń, wiążą się one również z kwestiami takimi jak zarządzanie uprawnieniami, obsługa zmiennych i wdrażanie struktur decyzyjnych. Opanowując skrypty Bash, użytkownicy mogą wykorzystać jego moc do optymalizacji przepływu pracy i usprawnienia zadań administracyjnych systemu na platformach Linux.