Samouczek Bash Scripting dla początkujących

Bash Scripting Tutorial



Domyślnym językiem poleceń systemu Linux jest skrypt Bash. W wielu celach musimy codziennie uruchamiać wiele poleceń w Linuksie. Te codzienne zadania można zautomatyzować za pomocą skryptu bash. Każdy użytkownik może bardzo łatwo i szybko nauczyć się tego języka skryptowego. Jeśli jesteś nowy w programowaniu bash, ten samouczek jest dla Ciebie.

Zawartość:

  1. Uwagi
  2. polecenie echo
  3. Zmienne
  4. Instrukcja warunkowa
  5. Pętle
  6. Funkcje
  7. Wywoływanie programów w skrypcie
  8. Tworzenie menu
  9. Przetwarzanie wiersza poleceń
  10. Arytmetyka
  11. Manipulacja ciągami
  12. Zwracanie kodów powrotnych ze skryptu i łapanie w innym skrypcie
  13. Czytanie i zapisywanie do plików
  14. Rury

Uwagi

Dodawanie komentarzy do kodu jest istotną częścią każdego języka programowania. Komentarze nie są analizowane ze skryptem w momencie wykonywania. Czytelnik może właściwie zrozumieć dowolny kod, jeśli kod jest dobrze skomentowany. W skrypcie bash możesz dodać komentarz na wiele sposobów. W tej części pokazano, jak dodać jedno- i wielowierszowe komentarze w skrypcie bash. Utwórz plik bash za pomocą następującego skryptu, aby poznać użycie komentarza bash. W tym przypadku symbol „#” służy do dodawania komentarza jednowierszowego, a pojedynczy cudzysłów („) z „:” służy do dodawania komentarzy wielowierszowych.







bash_comment.sh



#!/kosz/bash
#Weź liczbę jako dane wejściowe
wyrzucił „Wprowadź liczbę”
czytaćdo
:'
Sprawdź, czy numer wejściowy to
mniejsza niż 10 lub większa niż 10 lub równa 10
'

Jeśli [[ $ a -lt 10 ]]
następnie
wyrzucił „Liczba jest mniejsza niż 10”
Elifa [[ $ a -gt 10 ]]
następnie
wyrzucił „Liczba jest większa niż 10”
w przeciwnym razie
wyrzucił „Liczba równa się 10”
być

Wyjście:



Uruchom skrypt.





$grzmotnąćbash_comment.sh

Tutaj skrypt jest wykonywany trzy razy z wartością wejściową 3, 10 i 90. Pojawią się następujące dane wyjściowe.



Jeśli chcesz dowiedzieć się więcej o komentowaniu bash, możesz sprawdzić ten samouczek .

Idź do góry

polecenie echo

Polecenie `echo` jest używane w bash do drukowania danych wyjściowych w terminalu. Różne opcje mogą być używane z poleceniem echo w bash, aby wydrukować dane wyjściowe na różne sposoby. Utwórz plik bash za pomocą poniższego skryptu, aby poznać dwa proste zastosowania polecenia `echo`. Tutaj pierwsze polecenie `echo` wypisze proste dane tekstowe z nową linią, a drugie polecenie echo wypisze prosty tekst bez nowej linii.

echo_test.sh

#!/kosz/bash
#Wydrukuj pierwszy tekst
wyrzucił „Drukuj tekst z nową linią”
#Wydrukuj drugi tekst
wyrzucił -n „Drukuj tekst bez nowej linii”

Wyjście:

Uruchom skrypt.

$grzmotnąćecho_test.sh

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego polecenia.

Istnieje wiele innych zastosowań polecenia `echo` w bash. Możesz sprawdzić ten samouczek, aby dowiedzieć się więcej o poleceniu `echo`.

Idź do góry

Zmienne

Deklaracja zmiennej jest niezbędną częścią każdego języka programowania. Zmienne Bash można deklarować na różne sposoby. Gdy wartość jest przypisana w zmiennej, na początku zmiennej nie jest używany żaden symbol. Symbol „$” jest używany z nazwą zmiennej w momencie odczytu wartości zmiennej. Zmienna może być użyta z terminala lub może być użyta w dowolnym skrypcie basha.

Następujące polecenia zadeklarują zmienną łańcuchową o nazwie mystr z określoną wartością, a następnie wypisuje wartość zmiennej w terminalu.

$mystr=„Lubię programowanie w bashu”
$wyrzucił $mystr

Wyjście:

Utwórz plik bash za pomocą następującego skryptu. W tym miejscu deklarowane są dwie zmienne. To są $ a oraz $ b . Jeśli wartość wejściowa, która jest przechowywana w $ a jest równe $ b potem wiadomość, Liczby są równe zostanie wydrukowany w przeciwnym razie Liczby nie są równe zostanie wydrukowany.

var.sh

#!/kosz/bash
wyrzucił „Wprowadź liczbę”
czytaćdo
b=100
Jeśli [[ $ a -równe $ b ]]
następnie
wyrzucił „Liczby są równe”
w przeciwnym razie
wyrzucił „Liczby nie są równe”
być

Wyjście:

Uruchom skrypt.

$grzmotnąćvar.sh

Powyższe polecenie jest wykonywane dwa razy z wartością 56 i 100. Pojawi się następujące wyjście.

Jeśli chcesz dowiedzieć się więcej o zmiennych basha, możesz sprawdzić ten samouczek .

Idź do góry

Instrukcja warunkowa

Podobnie jak w innym języku programowania, możesz użyć instrukcji warunkowej w bash. ‘ Jeśli-to-inaczej ' oraz ' Obudowa Instrukcje ’ są używane głównie do implementacji instrukcji warunkowych w dowolnym języku programowania. Użycie instrukcji warunkowej przy użyciu 'Jeśli' oświadczenie jest pokazane w tej sekcji tego samouczka. Utwórz plik bash za pomocą następującego skryptu, w którym używana jest instrukcja warunkowa. Tutaj dwie wartości zostaną pobrane od użytkownika jako dane wejściowe i zapisane w zmiennych, $kod , oraz $wiek . Instrukcja „if” służy do sprawdzania wartości $wiek jest większa niż lub równa 18 i wartość $kod jest 1100 . Jeśli oba warunki są spełnione, komunikat, Masz prawo obejrzeć film zostanie wydrukowany w przeciwnym razie Nie możesz obejrzeć filmu zostanie wydrukowany.

kond.sz

#!/kosz/bash

wyrzucił 'Wpisz swój kod'
czytaćkod
wyrzucił 'Wpisz swój wiek'
czytaćwiek

Jeśli [[ $wiek -dawać 18 && $kod -równe '1100' ]]
następnie
wyrzucił „Masz prawo obejrzeć film”
w przeciwnym razie
wyrzucił „Nie możesz obejrzeć filmu”
być

Wyjście:

Uruchom skrypt.

$grzmotnąćkond.sz

Następujące dane wyjściowe pojawią się po przyjęciu różnych wartości wejściowych. 1100 jest podane jako kod, a 5 jako wiek pierwszego wykonania i jeśli warunek zwraca fałsz dla tych wartości. 1100 jest podane jako kod, a 45 jako wiek dla drugiego wykonania, które zwraca true dla warunku if.

Jeśli chcesz dowiedzieć się więcej o instrukcji warunkowej bash, możesz zapoznać się z tym samouczkiem.

Idź do góry

Pętle

Gdy niektóre części skryptu muszą zostać wykonane wiele razy, do wykonania zadania używana jest pętla. Bash obsługuje trzy typy deklaracji pętli, podobnie jak inne języki. Są to pętle dla, while i until. W oparciu o wymagania programistyczne w skrypcie używana jest konkretna pętla. W tej sekcji przedstawiono zastosowania tych trzech typów pętli na prostych przykładach.

Korzystanie z pętli

Utwórz plik bash za pomocą następującego skryptu, w którym ` dla ` pętla jest używana do iteracji. „dla” pętla jest używana głównie do iterowania listy danych lub tablicy. Tutaj używana jest lista nazw dni tygodnia, a każda nazwa dnia tygodnia jest iterowana za pomocą pętli for. „jeśli” Instrukcja służy do drukowania określonej wiadomości na podstawie nazwy dnia tygodnia.

for.sh

#Odczytaj nazwę dnia tygodnia w każdej iteracji pętli
dladzieńwponiedziałek wtorek środa czwartek piątek sobota niedziela
robić

#Sprawdź, czy nazwa dnia tygodnia to poniedziałek lub czwartek
Jeśli [[ $dzień=='Poniedziałek' || $dzień=='Czwartek' ]]
następnie
wyrzucił „Spotkanie”$dzieńo 9:30

#Sprawdź, czy nazwa dnia tygodnia to wtorek, środa lub piątek
Elifa [[ $dzień=='Wtorek' || $dzień=='Środa' || $dzień=='Piątek' ]]
następnie
wyrzucił 'Trenuj$dzieńo 11:00
w przeciwnym razie

#Drukuj „Wakacje” na inne dni
wyrzucił '$dzieńjest wakacje”
być
Gotowe

Wyjście:

Uruchom skrypt.

$grzmotnąćfor.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Jeśli chcesz dowiedzieć się więcej o używaniu bash for loop, zapoznaj się z tym samouczkiem.

Korzystanie z pętli while

Utwórz plik bash za pomocą następującego skryptu, w którym ` podczas gdy ` pętla jest używana do iteracji. Ten skrypt wypisze liczby od 1 do 20, które są parzyste i podzielne przez 5. Tutaj $licznik zmienna służy do sterowania iteracją pętli, a wartość tej zmiennej jest zwiększana o 1 w każdej iteracji. Kiedy „jeśli” warunek zwróci true to wypisze wartość $licznik .

#!/kosz/bash

#Wydrukuj wiadomość
wyrzucił „Wydrukuj liczby parzyste i podzielne przez 5”

#Zainicjuj licznik
licznik=1

#Iteruj pętlę, aż wartość licznika $ będzie mniejsza lub równa 20
podczas [ $licznik -ten 20 ]
robić

#Sprawdź, czy licznik $ jest podzielny przez 2 i 5
Jeśli [[ $licznik%2-równe 0 && $licznik%5-równe 0 ]]
następnie
#Wydrukuj licznik $ bez nowej linii
wyrzucił '$licznik'
być

#Zwiększ licznik $ o 1
((licznik++))
Gotowe
wyrzucił 'Gotowe'

Wyjście:

$grzmotnąćwhile.sh

Są tylko liczby od 1 do 20, które są parzyste i podzielne przez 5. Po uruchomieniu skryptu pojawią się następujące dane wyjściowe.

Jeśli chcesz dowiedzieć się więcej o używaniu bash ` podczas gdy ` pętla, a następnie możesz sprawdzić ten samouczek .

Używanie aż do pętli

Utwórz plik bash za pomocą następującego skryptu, w którym ` do ` pętla jest używana do iteracji. Ten skrypt wypisze wszystkie liczby nieparzyste od 0 do 20. $n zmienna jest używana w tym skrypcie do iteracji pętli.

do.sh

#!/kosz/bash

#Zainicjuj zmienną, n
n=20

#Powtarzaj pętlę, aż wartość $n będzie większa niż 0
dopóki [ $n -lt 0 ]
robić

#Sprawdź, czy wartość n jest nieparzysta
Jeśli [[ $n%2-gt 0 ]]
następnie
wyrzucił $n
być

#Zwiększ wartość n o 1
((n=$n-1))
Gotowe

Wyjście:

Uruchom skrypt.

$grzmotnąćdo.sh

Skrypt wypisze wszystkie liczby parzyste od 20 do 1. Po uruchomieniu skryptu pojawią się następujące dane wyjściowe.

Idź do góry

Funkcje

Gdy blok kodu musi zostać wykonany wiele razy w skrypcie, funkcja jest używana do wykonania zadania. Funkcję trzeba będzie wywoływać po nazwie tylko wtedy, gdy skrypt zdefiniowany w funkcji musi być wykonywany wiele razy, a nie wielokrotnie dodawać ten sam skrypt. Początkowy i końcowy pierwszy nawias jest używany z nazwą funkcji do zadeklarowania funkcji w skrypcie bash. Funkcja może być wywołana przez samą nazwę funkcji w bash. Bash nie obsługuje argumentu funkcji jak inny standardowy język programowania. Ale wartość można przekazać do funkcji bash w inny sposób, który pokazano w tej sekcji. Wartość może być zwrócona z funkcji za pomocą instrukcji return lub bez użycia instrukcji return.

Utwórz plik bash z następującym skryptem, aby dowiedzieć się, jak funkcje mogą być deklarowane i wywoływane w skrypcie bash. W skrypcie zadeklarowane są trzy funkcje. Pierwsza funkcja jest zadeklarowana do drukowania prostej wiadomości, Programowanie Bash dla początkujących . Druga funkcja jest zadeklarowana do przypisania wartości ciągu w zmiennej, $return_str które zostaną wydrukowane, Naucz się programowania w bashu z LinuxHint po wywołaniu funkcji. Trzecia funkcja deklaruje odczytywanie wartości argumentu jako promienia okręgu, który zostanie podany w momencie wywołania funkcji. Tutaj, lokalny służy do odczytywania wartości argumentu. Ta funkcja obliczy pole powierzchni okręgu na podstawie wartości promienia za pomocą wzoru, πr2 i wydrukuj obliczoną wartość powierzchni.

func.sh

#!/kosz/bash

#Zadeklaruj prostą funkcję
funkcjonowaćprint_message()
{
wyrzucił „Programowanie Bash dla początkujących”
}

#Zadeklaruj funkcję zwracającą wartość ciągu
funkcjonowaćret_strdata()
{
#Zainicjuj zmienną wartością ciągu
return_str='Naucz się programowania w bashu z LinuxHint'
}

#Zadeklaruj funkcję do odczytania wartości argumentu
funkcjonowaćoblicz_obszar()

#Odczytaj przekazaną wartość argumentu
lokalny promień=1 zł
powierzchnia= $(wyrzucił $promień*$promień*3,14

#Wywołaj funkcję, aby wydrukować prostą wiadomość
print_message

#Wywołaj funkcję, która przypisze wartość ciągu w zmiennej
ret_strdata

#Wydrukuj wartość zmiennej
wyrzucił $return_str

#Odczytaj wartość promienia
wyrzucił 'Wprowadź wartość promienia'
czytaćPraca

#Wywołaj funkcję z wartością promienia
oblicz_obszar$ rad

Wyjście:

Uruchom skrypt.

$grzmotnąćfunc.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu. Pierwsze dwie linie zostaną wydrukowane przez wywołanie funkcji, print_message() oraz ret_strdata () . Ostatnia linia zostanie wydrukowana po wywołaniu funkcji, oblicz_obszar () z pobraną wartością promienia wejściowego.

Jeśli chcesz wiedzieć o zwracaniu ciągu znaków z funkcji bash, możesz ten samouczek ten.

Idź do góry

Wywoływanie programów w skrypcie

Możesz używać wielu typów poleceń do wywoływania innych programów w dowolnym skrypcie basha, takich jak źródło, bash, eval, exec itd. Załóżmy, że trzy pliki bash, add.sh , odejmij.sh, mnożenie.sh i dzielenie.sh stworzony do wykonywania dodawania, odejmowania, mnożenia i dzielenia. Tutaj, odejmowanie.sh oraz podział.sh przeczytaj argumenty wiersza poleceń. Skrypt wszystkich tych czterech plików znajduje się poniżej.

add.sh

#!/kosz/bash
do=60
b=40
((wynik=$ a+$ b))
wyrzucił „Dodanie”$ a+$ b=$wynik'

subract.sh

#!/kosz/bash
do=1 zł
b=2 zł
((wynik=$ a-$ b))
wyrzucił „Odejmowanie”$ a-$ b=$wynik'

mnoż.sh

#!/kosz/bash
((wynik=1 zł*2 zł))
wyrzucił 'Mnożenie 1 i 2 USD to$wynik'

dziel.sz

#!/kosz/bash
do=1 zł
b=2
((wynik=$ a/$ b))
wyrzucił „Podział”$ aza pomocą$ bjest$wynik'

Utwórz plik bash o nazwie, callpro.sh z następującym skryptem do wywołania wspomnianych plików bash za pomocą poleceń source, bash, eval i exec. Musisz ustawić uprawnienia do wykonywania powyższych czterech plików przed uruchomieniem następującego skryptu. Komenda `source` jest używana do wywołania add.sh plik. Polecenie `bash` służy do wykonania pliku subtract.sh. Polecenie `eval` służy do wykonania pliku multiply.sh. Dwie wartości wejściowe są przesyłane jako argumenty wiersza poleceń dla polecenia `eval`. Ostatnim poleceniem jest polecenie exec, które działa tylko ze ścieżką bezwzględną. W tym celu w skrypcie podana jest pełna nazwa ścieżki do pliku divide.sh.

callpro.sh

#!/kosz/bash
skrypt1=„dodaj.sz”
skrypt2='odjąć.sh'
skrypt3='mnoż.sz'
skrypt4='/home/fahmida/kod/podziel.sh'

źródło '$skrypt1'

grzmotnąć $skrypt2 pięćdziesiąt 20

wyrzucił 'Wprowadź wartość a'
czytaćdo
wyrzucił 'Wprowadź wartość b'
czytaćb
oceniać grzmotnąć $skrypt3 $ a $ b
exec $skrypt4 30

Wyjście:

Uruchom skrypt.

$grzmotnąćcallpro.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Idź do góry

Tworzenie menu

W bashu jest przydatne polecenie do stworzenia prostego menu, które nazywa się `wybierz` Komenda. Za pomocą tego polecenia można tworzyć różne typy menu. Konkretna lista danych służy do tworzenia menu za pomocą tego polecenia. Utwórz plik bash z następującym kodem, aby zobaczyć użycie `wybierz` polecenie do tworzenia menu. W tym przykładzie lista pięciu pozycji zostanie wydrukowana jako menu i poprosi użytkownika o wybranie dowolnego języka z listy. Wybrana wartość zostanie zapisana w zmiennej, $język który jest wypisywany później przez połączenie z innym łańcuchem. Skrypt będzie stale pytał o wybór języka, dopóki użytkownik nie naciśnie 6 zakończyć ze skryptu.

menu.sh

#!/kosz/bash

#Wydrukuj wiadomość dla użytkownika
wyrzucił 'Wybierz swój ulubiony język'

# Zdefiniuj listę pozycji menu
WybierzjęzykwC# Java PHP Python Bash Wyjście
robić
#Wydrukuj wybraną wartość
Jeśli [[ $język=='Wyjście' ]]
następnie
Wyjście 0
w przeciwnym razie
wyrzucił 'Wybrany język to$język'
być
Gotowe

Wyjście:

Uruchom skrypt.

$grzmotnąćmenu.sh

Zgodnie z następującymi danymi wyjściowymi, użytkownik nacisnął 3 po raz pierwszy, aby wydrukować PHP i nacisnął 6 po raz drugi, co zakończyło działanie skryptu.

Jeśli chcesz dowiedzieć się więcej o tworzeniu menu bash za pomocą `select`, możesz odwiedzić ten samouczek .

Idź do góry

Przetwarzanie wiersza poleceń

Czasami musimy podać wartości wejściowe podczas wykonywania skryptu z wiersza poleceń. W basha zadanie to można wykonać na dwa sposoby. Jednym ze sposobów jest użycie zmiennych argumentów, a innym sposobem jest użycie funkcji getopts. W tej sekcji pokazano odczytywanie danych wejściowych wiersza poleceń z terminala za pomocą zmiennej argumentu.

Utwórz plik bash za pomocą następującego skryptu, aby zobaczyć użycie odczytywania wartości argumentu wiersza poleceń. Ten skrypt odczyta trzy argumenty wiersza poleceń, które będą przechowywane w zmiennych $operand1, $operand2 i $operator. Aby skrypt wykonał się poprawnie, wartości pierwszego i trzeciego argumentu muszą być liczbą, a wartość drugiego argumentu musi być dowolnym z czterech operatorów arytmetycznych („+”, „-”, „/”, „x”). Jeśli instrukcja sprawdzi wartość $operator i wykona operację opartą na operatorze i wyświetli wartość.

cl1.sh

#!/kosz/bash

#Wydrukuj zmienne argumentów
wyrzucił „Wartości argumentów to: 1 USD 2 USD 3 USD”

# Przechowuj wartości argumentów
argument1=1 zł
argument 2=3 zł
operator=2 zł

#Sprawdź wartość drugiego argumentu polecenia, aby wykonać operację arytmetyczną
Jeśli [[ $operator==„+” ]]
następnie
((wynik=$ operand1+$ operand2))
Elifa [[ $operator==„-” ]]
następnie
((wynik=$ operand1-$ operand2))
Elifa [[ $operator=='x' ]]
następnie
((wynik=$ operand1*$ operand2))
Elifa [[ $operator=='/' ]]
następnie

((wynik=$ operand1/$ operand2))
być

# wydrukuj wynik
wyrzucił -I 'Wynik to =$wynik'

Wyjście:

Uruchom skrypt.

$grzmotnąćcl1.sh

Skrypt jest wykonywany czterokrotnie dla czterech typów operatorów arytmetycznych. Dla wartości argumentów pojawią się następujące dane wyjściowe: 6 + 3, 6 – 3, 6 x 3 i 6 / 3 .

Wartości argumentów można przekazywać z parą nazwa-wartość w bash. Utwórz plik bash z następującym skryptem, aby pokazać, jak odczytywać wartości argumentów z nazwą. Skrypt odczyta dwie zmienne argumentowe. Wartości argumentów z nazwą są wypisywane w pierwszej instrukcji skryptu. Następnie pętla for jest używana do iteracji tablicy zawierającej wartości argumentów wiersza poleceń. Każdy element tablicy jest rozdzielany na parę klucz-wartość za pomocą polecenia „wytnij”. Następnie instrukcja case służy do drukowania określonej wiadomości na podstawie wartości klucza.

cl2.sh

#! /jestem/grzmotnąć

#Wydrukuj zmienne argumentów
wyrzucił „Wartości argumentów to: $1 $2”

#Przeczytaj każdy argument osobno, używając pętli for
dlazływ ' [e-mail chroniony] '
robić

#Oddzielna nazwa i wartość argumentu
klucz= $(wyrzucił $ arg | skaleczenie -f1 -D=)
wartość= $(wyrzucił $ arg | skaleczenie -f2 -D=)

#Wydrukuj wiadomość na podstawie nazwy argumentu
Obudowa $klucz w
Nazwa) wyrzucił 'Nazwisko ucznia =$wartość';;
ocena) wyrzucił 'Uzyskany znak =$wartość' ;;
*)
esac
Gotowe

Wyjście:

Uruchom skrypt z następującymi argumentami wiersza poleceń.

$grzmotnąćcl2.shNazwa=Abir Hossainocena=90

W powyższych poleceniach podano dwa argumenty wiersza poleceń. To są nazwa=Abir Hossain oraz znak=90 . Nazwa oraz znaki są rozdzielane przez skrypt, a po sformatowaniu wyjścia wypisywane są dwie wartości.

Przetwarzanie argumentów wiersza poleceń za pomocą getopts funkcja nie jest omawiana w tym samouczku. Jeśli chcesz wiedzieć o przetwarzaniu wiersza poleceń za pomocą getopts funkcja, a następnie możesz odwiedzić ten samouczek .

Idź do góry

Arytmetyka

Wykonywanie operacji arytmetycznych jest powszechnym wymaganiem każdego języka programowania. Bash wykonuje operacje arytmetyczne w inny sposób niż inny standardowy język programowania. Istnieje wiele sposobów wykonywania operacji arytmetycznych w bash. W tej sekcji pokazano jeden z prostych sposobów wykonywania operacji arytmetycznych. Utwórz plik bash za pomocą następującego skryptu. W tym skrypcie przedstawiono cztery rodzaje operacji arytmetycznych. Proste operacje sumowania i dzielenia są pokazane za pomocą podwójnych pierwszych nawiasów na początku skryptu. Następnie pokazana jest operacja pre-inkrementacji. Na koniec, w ostatniej części skryptu pokazano sposób użycia operatora skróconego.

arith.sh

#!/kosz/bash
# Oblicz sumę
wynik= $((pięćdziesiąt+25))
# Wydrukuj wartość sumy
wyrzucił „suma =$wynik'

# Oblicz podział
wynik= $((pięćdziesiąt/25))
# Drukuj wartość podziału
wyrzucił 'podział =$wynik'

# Przypisz wartość do N
n=10
# Robienie pre-inkrementacji
((--N))
# Wydrukuj wartość N
wyrzucił 'Wartość po dekrementacji =$N'

# Używanie skróconego operatora
((N +=10 ))
# Wydrukuj wartość N
wyrzucił 'Wartość po dodaniu 10 =$N'

Wyjście:

Uruchom skrypt.

$grzmotnąćarith.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Wszystkie operacje arytmetyczne są wykonywane przy użyciu podwójnych nawiasów w powyższym skrypcie. Ale możesz użyć ‘ pozwolić „”,„ wyraż ' oraz ' pne polecenie do wykonania operacji arytmetycznych w bash. Jeśli chcesz dowiedzieć się więcej o tych poleceniach do wykonywania operacji arytmetycznych basha, możesz odwiedzić ten samouczek.

Idź do góry

Manipulacja strunami

Wiele rodzajów zadań można wykonać za pomocą danych ciągów w bash. Niektóre z nich to konkatenacja łańcucha, porównywanie łańcucha, dzielenie łańcucha, zmiana wielkości liter w łańcuchu itp. Nie ma wbudowanych funkcji łańcuchowych, takich jak inne standardowe języki w bash do wykonywania operacji na łańcuchach. Niektóre typowe manipulacje ciągami zostały omówione w tej sekcji tego samouczka.

Łączenie ciągu

Dodanie dwóch lub więcej ciągów razem nazywa się konkatenacją ciągów. Sznurki łączy się w bash, układając jeden po drugim. Utwórz plik bash za pomocą następującego skryptu, aby pokazać użycie konkatenacji ciągów. Dwie zmienne łańcuchowe są inicjowane i drukowane po połączeniu zmiennych. Tutaj treść $string1 oraz $string2 zostaną scalone i wydrukowane.

concat.sh

#!/kosz/bash

#Zainicjuj pierwszą zmienną ciągu
ciąg1='Podoba mi się '
#Zainicjuj drugą zmienną ciągu
ciąg2=„Programowanie Bash”
#Drukuj po połączeniu obu ciągów
wyrzucił '$string1$string2'

Wyjście:

Uruchom skrypt.

$grzmotnąćconcat.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Możesz dowiedzieć się więcej o łączeniu ciągów z tego samouczka.

Idź do góry

Porównywanie ciągów

Bash używa różnych typów operatorów do porównywania danych ciągów. Utwórz plik bash za pomocą następującego skryptu, aby pokazać, jak porównać dwa dane ciągu. Wartość ciągu jest przyjmowana jako dane wejściowe w skrypcie, który jest porównywany z innym ciągiem. Jeśli wartość pasuje, to wiadomość, Lubisz Pythona zostanie wydrukowany w przeciwnym razie Lubisz PERL zostanie wydrukowany.

porównaj.sh

#!/kosz/bash
wyrzuciłWpisz dowolną wartość ciągu
czytaćtekst

#Sprawdź, czy dane wejściowe są równoważne z Pythonem
Jeśli [ $tekst=='Pyton' ];następnie
wyrzucił — Lubisz Pythona.
w przeciwnym razie
wyrzucił „Lubisz PERL”
być

Wyjście:

Uruchom skrypt.

$grzmotnąćporównaj.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu, w którym wartością wejściową jest „PERL”.

Możesz dowiedzieć się więcej o porównaniu ciągów z ten samouczek .

Dzielenie sznurka

Bash nie ma wbudowanej funkcji dzielenia do dzielenia danych ciągów. Dane ciągu można podzielić na wiele sposobów w bash na podstawie różnych typów ograniczników. Utwórz plik bash za pomocą następującego skryptu, aby pokazać, jak dane ciągu można podzielić na bash. Jako dane wejściowe przyjmowana jest wartość ciągu. Ten skrypt podzieli wartość $tekst w oparciu o przestrzeń. Tutaj IFS zmienna służy do ustawienia ogranicznika. `czytaj` Polecenie służy tutaj do dzielenia wartości tekstowej i przechowywania wartości w tablicy. dla pętla służy do iteracji tablicy i wypisania wartości każdego elementu.

split.sh

#!/kosz/bash
#Wprowadź wartość ciągu
wyrzuciłWpisz wartość ciągu
czytaćtekst
# Ustaw ogranicznik
IFS=''
#Podziel wartość $text na tablicę na podstawie separatora spacji
czytać -doArr<<< '$tekst'
# Wydrukuj każdą wartość tablicy
dlawartośćw '${arr[@]}';
robić
printf '$wartość '
Gotowe

Wyjście:

Uruchom skrypt.

$grzmotnąćsplit.sh

Następujące dane wyjściowe pojawią się po pobraniu danych wejściowych, Naucz się programowania Bash . Ta wartość wejściowa to tekst składający się z trzech słów. Tak więc sznurek jest podzielony na trzy części.

Możesz dowiedzieć się więcej o porównaniu ciągów z ten samouczek .

Zmiana przypadku struny

Większość języków skryptowych ma wbudowane funkcje do zmiany wielkości liter w danych ciągu. Ale przypadek danych ciągu można zmienić w bash za pomocą „tr” poleceniem lub za pomocą ':górny' oraz ':niżej' słowa kluczowe. Utwórz plik bash za pomocą poniższego skryptu, aby poznać sposoby zmiany wielkości liter w bash. Tutaj pierwsze dane ciągu są konwertowane na wielkie litery za pomocą „^^” symbol, a drugi ciąg jest konwertowany na małe litery za pomocą „tr” Komenda. „tr” polecenie przeszuka wszystkie wielkie litery w ciągu i zamieni znaki na małe.

case.sh

#!/kosz/bash

#Zainicjuj pierwsze dane ciągu
Tekst 1=' [e-mail chroniony] '

#Wydrukuj wartość $text1, konwertując wszystkie znaki na wielkie litery
wyrzucił ${e-mail^^}

#Zainicjuj drugi ciąg danych
tekst2=’Podstawy programowania Bash’

#Wydrukuj wartość $text2 przez konwersję wielkich liter na małe
wyrzucił $text2 | NS [:górny:] [:niżej:]

Wyjście:

Uruchom skrypt.

$grzmotnąćcase.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Możesz dowiedzieć się więcej o porównaniu ciągów z ten samouczek .

Idź do góry

Odczytywanie danych ciągu przez pętlę

Dane ciągu działają jako tablica znaków dla dowolnego języka programowania. Jak ' dla Pętla ’ może być użyta do odczytu danych w bash jest pokazana w tej sekcji. Utwórz plik podstawowy z następującym skryptem, aby odczytać każdą część wartości ciągu za pomocą pętli for.

readstr.sh

#!/bin/bas
# Przeczytaj każde słowo tekstu za pomocą pętli for
dlawartośćwProgramowanie Bashdlapoczątkujący
robić
wyrzucił $wartość
Gotowe

Wyjście:

Uruchom skrypt.

$grzmotnąćreadstr.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Możesz dowiedzieć się więcej o iteracji danych ciągów za pomocą pętli z ten samouczek .

Idź do góry

Zwracanie kodów powrotnych ze skryptu i łapanie w innym skrypcie

Jeden skrypt bash może przechwycić kody powrotu z innego skryptu, wywołując skrypt i używając „$?” odczytać wartość zwracaną. Załóżmy, że plik bash o nazwie pierwszy.sh zwraca kod po wykonaniu. Utwórz kolejny plik bash o nazwie drugi.sh i dodaj następujący skrypt, aby przechwycić wartość zwracaną i wykonać kilka innych zadań. Kod obu plików znajduje się poniżej. pierwszy.sh plik zostanie wywołany z drugi.sh plik na początku skryptu. pierwszy.sh zwróci kod wyjścia na podstawie wartości wejściowej. second.sh złapie kod przez „$?” i porównaj z 1. Jeśli obie wartości są równe, zostanie wydrukowane, Numer wejściowy jest większy niż 100 , w przeciwnym razie wydrukuje, Numer wejściowy jest mniejszy lub równy 100 .

pierwszy.sh

#!/kosz/bash

wyrzucił „Wprowadź wartość liczbową”
czytaćn

# Sprawdź, czy wartość wejściowa jest mniejsza lub równa 100 lub nie
Jeśli [[ $n -ten 100 ]]
następnie
Wyjście 0
w przeciwnym razie
Wyjście 1
być

drugi.sh

#! /bin/bash

#Wykonaj plik, najpierw.sh
grzmotnąć 'pierwszy.sh'

#Sprawdź, czy kod zwrotny jest równy 1 czy nie
Jeśli [ $? -równe 1 ]
następnie
wyrzucił 'Liczba wejściowa jest większa niż 100'
w przeciwnym razie
wyrzucił „Liczba wejściowa jest mniejsza lub równa 100”
być

Wyjście:

Uruchom skrypt.

$grzmotnąćdrugi.sh

Poniższe dane wyjściowe pojawią się, gdy skrypt zostanie wykonany przez 55 i 110 dwa razy.

Idź do góry

Czytanie i zapisywanie do plików

Odczytywanie i zapisywanie plików to wspólne wymagania programowania bash. Bash nie ma żadnej wbudowanej funkcji, takiej jak inny język, do odczytu lub zapisu pliku. Istnieje wiele sposobów na odczytanie pliku w bash. Najpopularniejszym sposobem odczytu lub zapisu pliku w bash jest użycie „kot” Komenda. Ale to polecenie służy do jednoczesnego odczytu całej zawartości pliku. Możesz także odczytać dowolny plik wiersz po wierszu, używając dowolnej pętli i `czytaj` Komenda. Korzystanie z operatora przekierowania, „>” , możesz zapisywać dane do dowolnego pliku w bash. Jeśli chcesz dołączyć dane do dowolnego pliku, musisz użyć '>>' operator. W dalszej części tej sekcji przedstawiono zarówno operacje odczytu, jak i zapisu plików.

Odczytywanie pliku w bashu

Utwórz plik bash za pomocą następującego skryptu, aby odczytać istniejący plik o nazwie „ hardware.txt ”. Zawartość tego pliku jest podana poniżej. W skrypcie cała zawartość pliku jest odczytywana przez „kot” polecenie pierwsze i następne, natomiast pętla służy do odczytywania pliku wiersz po wierszu.

hardware.txt

Monitor
Klawiatura
Mysz
Skaner
Drukarka

readfile.sh

#!/kosz/bash

wyrzucił 'Czytanie pliku za pomocą polecenia cat'

# Przeczytaj zawartość pliku za pomocą polecenia `cat`
zadowolony=``Kothardware.txt``
wyrzucił $treść

wyrzucił 'Odczytywanie pliku wiersz po wierszu za pomocą pętli'

# Przypisz nazwę pliku
Nazwa pliku='sprzęt.txt'

# Każda linia pliku zostanie odczytana przez każdą iterację pętli
podczas czytaćlinia;
robić
# wydrukuj linię
wyrzucił $linia
Gotowe<$nazwa pliku

Wyjście:

Uruchom następujące polecenia.

$Kothardware.txt
$grzmotnąćreadfile.sh

Tutaj pierwsze polecenie wyświetli zawartość pliku, hardware.txt bez uruchamiania żadnego skryptu bash, a drugie polecenie uruchomi skrypt readfile.sh i wydrukuj zawartość pliku dwa razy, używając „kot” polecenie i `czytaj` polecenie z pętlą while. Możesz to odwiedzić instruktaż aby dowiedzieć się więcej o czytaniu pliku linia po linii.

Zapisywanie pliku w bash

Utwórz plik bash z następującym skryptem, aby zapisać nową zawartość w nowym pliku i dołączyć dane do tego pliku.

plik_zapisu.sh

#!/kosz/bash

wyrzucił „Wprowadź tekst”
#Odczytaj dane ciągu
czytaćstr1
#Dodaj dane wejściowe do pliku po raz pierwszy
wyrzucił $str1 >test.txt

wyrzucił „Wprowadź inny tekst”
#Odczytaj kolejny ciąg danych
czytaćstr2
#Dodaj dane wejściowe na końcu pliku
wyrzucił $str2 >>test.txt

#Pokaż pełną zawartość pliku
wyrzucił ``Kottest.txt``

Wyjście:

Uruchom skrypt.

$grzmotnąćplik_zapisu.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Idź do góry

Rury

Pipe służy do przekierowania dowolnego wyjścia polecenia do innego wejścia polecenia. Może być używany wśród różnych typów poleceń bash do generowania określonych danych wyjściowych. Standardowe wejście jest połączone ze standardowym wyjściem w Linuksie za pomocą potoku. Musisz ustawić polecenie w kolejności z symbolem potoku ( | ), aby uzyskać żądane wyjście. Dwa lub więcej poleceń można wykonać razem w jednym poleceniu przy użyciu potoku. Aby wykonać to samo zadanie, musisz wykonać wiele poleceń w wielu wierszach bez potoku. Tak więc użycie potoku jest bardzo korzystne przy wykonywaniu wielu rodzajów zadań w krótkiej formie.

składnia:

polecenie1|polecenie2|...

Tutaj dane wyjściowe polecenia1 zostaną przekazane jako dane wejściowe polecenia2.

Ten sam rodzaj zadania jest wykonany z rurą i bez rury w dalszej części tego rozdziału. Załóżmy, że plik tekstowy o nazwie mark.txt jest podany z następującymi danymi.

mark.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Musisz posortować dane w pliku, znaleźć i wydrukować cały wpis dotyczący nazwiska ucznia „K Tak ' . Możesz wykonać to zadanie, uruchamiając wiele poleceń bez użycia potoku, który jest pokazany w następnej sekcji. Następujące polecenia będą musiały zostać uruchomione, aby uzyskać żądane dane wyjściowe. Pierwsze polecenie posortuje plik. Drugie polecenie wyszuka wpis „K Tak ' używając ` chwyt polecenie ` i zapisz dane wyjściowe w temp.txt plik. Trzecie polecenie policzy sumę wierszy a temp.txt plik za pomocą toaleta Komenda.

$sortowaćmark.txt
$chwyt „Keja”mark.txt>temp.txt
$toaleta -tentemp.txt

Wyjście:

W pliku znajdują się dwa wpisy ucznia „Keya”. Tak więc po uruchomieniu powyższych poleceń pojawi się następujące wyjście.

Możesz łatwo scalić powyższe trzy polecenia i uzyskać te same dane wyjściowe, uruchamiając jedno polecenie z potoku, który jest pokazany w poniższym poleceniu. Do pobrania danych wyjściowych nie jest wymagany żaden plik tymczasowy. Tutaj wyjście ` sortować Polecenie ` zostanie przekazane jako wejście ` chwyt polecenie ` i wyjście ` chwyt `polecenie zostanie przekazane jako dane wejściowe dla toaleta Komenda.

$sortowaćmark.txt| chwyt „Keja” | toaleta -ten

Wyjście:

Po uruchomieniu powyższego polecenia otrzymasz następujące dane wyjściowe, takie jak dane wyjściowe poprzedniego polecenia. Wynikiem polecenia będzie 2.

Idź do góry

Wniosek:

W tym samouczku postaramy się omówić większość przydatnych i niezbędnych tematów dotyczących języka skryptowego bash. Mam nadzieję, że czytelnik odniesie korzyści po przeczytaniu tego samouczka i będzie mógł wydajniej pisać skrypty bash.