logo

Przykłady skryptów powłoki

W przypadku wszystkich dystrybucji Linuksa skrypt powłoki jest jak magiczna różdżka, która automatyzuje proces, oszczędza czas użytkowników i zwiększa produktywność. Ten samouczek dotyczący skryptowania wprowadzi Cię w ponad 25 przykładów tworzenia skryptów.

Zanim jednak przejdziemy do tematu skrypty powłoki przykłady, przyjrzyjmy się skryptowi powłoki i rzeczywistym przypadkom użycia skryptów powłoki.

Co to jest skrypt powłoki?

Cóż, skorupa jest interfejs wiersza polecenia ( interpreter wiersza poleceń ), który działa w oknie tekstowym, w którym użytkownicy mogą zarządzać poleceniami powłoki i je wykonywać. Z drugiej strony proces pisania zestawu poleceń do wykonania w systemie Linux. Plik zawierający takie instrukcje nazywany jest skryptem bash.



Zastosowania skryptów powłoki

Poniżej znajduje się kilka typowych zastosowań skryptu powłoki:

  • Automatyzacja zadań – Można go używać do automatyzacji powtarzalnych zadań, takich jak regularne tworzenie kopii zapasowych i zadania instalacji oprogramowania.
  • Dostosowywanie - Można używać skryptów powłoki do projektowania środowiska wiersza poleceń i łatwego wykonywania zadań zgodnie z potrzebami.
  • Zarządzanie plikami - Skryptów powłoki można również używać do zarządzania plikami i katalogami oraz manipulowania nimi, na przykład przenoszenia, kopiowania, zmiany nazwy lub usuwania plików.

Przykłady skryptów powłoki w systemie Linux

1) Co oznacza shebang (#!) na początku skryptu powłoki?

The shebang (#!) na początku skryptu wskazuje interpreter, który powinien zostać użyty do wykonania skryptu. Mówi systemowi, która powłoka lub interpreter powinien interpretować polecenia skryptu.

Na przykład: Załóżmy, że mamy skrypt o nazwie mójscript.sh napisane w powłoce Bash:

scan.next Java
szulernia

szulernia

W tym przykładzie:

  • Znak #!/bin/bash na początku skryptu wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  • Polecenia echo służą do drukowania komunikatów na terminalu.

2) Jak uruchomić skrypt powłoki z wiersza poleceń?

Aby uruchomić skrypt powłoki z wiersza poleceń, musimy wykonać następujące kroki:

  • Upewnij się, że plik skryptu ma uprawnienia do wykonywania, używając polecenie chmod :
chmod +x myscript.sh>
  • Wykonaj skrypt, używając jego nazwy pliku:
./myscript.sh>

Tutaj musisz wymienić myscript.sh z twoją nazwą skryptu.

3) Napisz skrypt powłoki, który wypisuje plik techcodeview.com na terminalu.

Utwórz nazwę skryptu `myscript.sh` (używamy ` ponieważ ` edytor, możesz wybrać dowolny edytor)

vim myscript.sh>

#!/bin/bash
# Ten skrypt drukuje plik techcodeview.com na terminalu
echo techcodeview.com

Nazwa wydruku

Nazwa wydruku

Sprawiamy, że nasz skrypt jest wykonywalny, używając `chmod +x`, a następnie wykonujemy go za pomocą `./myscipt.sh` i uzyskujemy żądane wyjście techcodeview.com.

4) Wyjaśnij cel polecenia echo w skryptach powłoki.

The polecenie echa służy do wyświetlania tekstu lub zmiennych na terminalu. Jest powszechnie używany do drukowania komunikatów, wartości zmiennych i generowania wyników programu.

434

polecenie echa

W tym przykładzie wykonaliśmy `echo` bezpośrednio na terminalu, ponieważ działa to tak samo w skrypcie powłoki.

5) Jak przypisać wartość do zmiennej w skrypcie powłoki?

Zmiennym przypisuje się wartości za pomocą operatora przypisania =.

Na przykład:

#!/bin/bash
# Przypisywanie wartości do zmiennej
imię = Jayesh
wiek=21
echo $imię $wiek

Wyjaśnienie:

  • Zmiennej nazwie przypisano wartość Jayesh.
  • Zmiennej wiek przypisano wartość 21.
  • echo służy do drukowania, a `$nazwa` `$wiek` służy do wywoływania wartości przechowywanej w zmiennych.

435

6) Napisz skrypt powłoki, który jako dane wejściowe pobiera nazwę użytkownika i wita go.

Utwórz skrypt o nazwie `example.sh`.

#!/bin/bash
# Zapytaj użytkownika o jego imię i nazwisko
echo Jak masz na imię?
przeczytaj imię
# Powitaj użytkownika
echo Witaj, $imie! Miło mi cię poznać.

Wyjaśnienie:

  • #!/bin/bash: To jest linia Shebang. Mówi systemowi, aby użył interpretera Bash do wykonania skryptu.
  • # Zapytaj użytkownika o jego imię i nazwisko: To jest komentarz. Zapewnia kontekst dotyczący nadchodzącego kodu. Komentarze są ignorowane przez tłumacza.
  • echo Jak się nazywasz?: Polecenie echo służy do wyświetlania tekstu w cudzysłowie na terminalu.
  • read name: Polecenie read czeka, aż użytkownik wprowadzi tekst i zapisuje go w nazwie zmiennej.
  • echo Witaj, $imię! Miło cię poznać.: Ta linia używa polecenia echo do wydrukowania wiadomości powitalnej zawierającej wartość zmiennej name, która została pobrana z danych wprowadzonych przez użytkownika.

436

7) Jak dodać komentarze do skryptu powłoki?

Komentarze w skryptach powłoki służą do zapewnienia wyjaśnień lub kontekstu kodu. Są one ignorowane przez tłumacza i są przeznaczone wyłącznie dla ludzi czytających scenariusz. Możesz dodawać komentarze, używając symbolu #.

#!/bin/bash
# To jest komentarz wyjaśniający cel skryptu
powtórz GFG

8) Utwórz skrypt powłoki, który sprawdza, czy w bieżącym katalogu istnieje plik.

Oto skrypt sprawdzający, czy w bieżącym katalogu istnieje plik o nazwie example.txt:

#!/bin/bash
plik=przykład.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
echo Plik istnieje: $plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=example.txt: Ta linia definiuje plik zmiennych i przypisuje mu wartość example.txt. Możesz zastąpić tę nazwę plikiem, który chcesz sprawdzić.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Warunek [ -e $plik ] sprawdza, czy plik określony przez wartość zmiennej pliku istnieje. Flaga -e służy do sprawdzania istnienia pliku.
  4. echo Plik istnieje: $plik: Jeśli warunek jest spełniony (tj. plik istnieje), w tej linii zostanie wyświetlony komunikat wskazujący, że plik istnieje, wraz z nazwą pliku.
  5. else: Jeśli warunek jest fałszywy (tzn. plik nie istnieje), skrypt wykonuje kod z gałęzi else.
  6. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że określony plik nie został znaleziony, wraz z jego nazwą.
  7. fi: Ta linia oznacza koniec instrukcji if.
Znalezienie pliku

Znalezienie pliku

9) Jaka jest różnica pomiędzy pojedynczymi cudzysłowami („) i podwójnymi cudzysłowami () w skryptach powłoki?

Pojedyncze cudzysłowy („) i podwójne cudzysłowy () służą do umieszczania ciągów znaków w skryptach powłoki, ale zachowują się inaczej:

  • Pojedyncze cudzysłowy: wszystko pomiędzy pojedynczymi cudzysłowami jest traktowane jako ciąg znaków. Nazwy zmiennych i większość znaków specjalnych nie są rozwijane.
  • Podwójne cudzysłowy: Zmienne i niektóre znaki specjalne w podwójnych cudzysłowach są rozwijane. Treść podlega podstawieniu zmiennych i podstawieniu poleceń.

#!/bin/bash

abcd=Witam
echo „$abcd” # Dane wyjściowe: $abcd
echo $abcd # Wynik: Witam

10) Jak można używać argumentów wiersza poleceń w skrypcie powłoki?

Argumenty wiersza poleceń to wartości dostarczane do skryptu podczas jego wykonywania. Dostęp do nich można uzyskać w skrypcie za pomocą specjalnych zmiennych, takich jak 1 $, 2 $ itd., gdzie 1 $ reprezentuje pierwszy argument, 2 $ reprezentuje drugi argument i tak dalej.

Na przykład: Jeśli nasza nazwa skryptu w `example.sh`

#!/bin/bash

echo Nazwa skryptu:

W przypadku wszystkich dystrybucji Linuksa skrypt powłoki jest jak magiczna różdżka, która automatyzuje proces, oszczędza czas użytkowników i zwiększa produktywność. Ten samouczek dotyczący skryptowania wprowadzi Cię w ponad 25 przykładów tworzenia skryptów.

Zanim jednak przejdziemy do tematu skrypty powłoki przykłady, przyjrzyjmy się skryptowi powłoki i rzeczywistym przypadkom użycia skryptów powłoki.

Co to jest skrypt powłoki?

Cóż, skorupa jest interfejs wiersza polecenia ( interpreter wiersza poleceń ), który działa w oknie tekstowym, w którym użytkownicy mogą zarządzać poleceniami powłoki i je wykonywać. Z drugiej strony proces pisania zestawu poleceń do wykonania w systemie Linux. Plik zawierający takie instrukcje nazywany jest skryptem bash.

Zastosowania skryptów powłoki

Poniżej znajduje się kilka typowych zastosowań skryptu powłoki:

  • Automatyzacja zadań – Można go używać do automatyzacji powtarzalnych zadań, takich jak regularne tworzenie kopii zapasowych i zadania instalacji oprogramowania.
  • Dostosowywanie - Można używać skryptów powłoki do projektowania środowiska wiersza poleceń i łatwego wykonywania zadań zgodnie z potrzebami.
  • Zarządzanie plikami - Skryptów powłoki można również używać do zarządzania plikami i katalogami oraz manipulowania nimi, na przykład przenoszenia, kopiowania, zmiany nazwy lub usuwania plików.

Przykłady skryptów powłoki w systemie Linux

1) Co oznacza shebang (#!) na początku skryptu powłoki?

The shebang (#!) na początku skryptu wskazuje interpreter, który powinien zostać użyty do wykonania skryptu. Mówi systemowi, która powłoka lub interpreter powinien interpretować polecenia skryptu.

Na przykład: Załóżmy, że mamy skrypt o nazwie mójscript.sh napisane w powłoce Bash:

szulernia

szulernia

W tym przykładzie:

  • Znak #!/bin/bash na początku skryptu wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  • Polecenia echo służą do drukowania komunikatów na terminalu.

2) Jak uruchomić skrypt powłoki z wiersza poleceń?

Aby uruchomić skrypt powłoki z wiersza poleceń, musimy wykonać następujące kroki:

  • Upewnij się, że plik skryptu ma uprawnienia do wykonywania, używając polecenie chmod :
chmod +x myscript.sh>
  • Wykonaj skrypt, używając jego nazwy pliku:
./myscript.sh>

Tutaj musisz wymienić myscript.sh z twoją nazwą skryptu.

3) Napisz skrypt powłoki, który wypisuje plik techcodeview.com na terminalu.

Utwórz nazwę skryptu `myscript.sh` (używamy ` ponieważ ` edytor, możesz wybrać dowolny edytor)

vim myscript.sh>

#!/bin/bash
# Ten skrypt drukuje plik techcodeview.com na terminalu
echo techcodeview.com

Nazwa wydruku

Nazwa wydruku

Sprawiamy, że nasz skrypt jest wykonywalny, używając `chmod +x`, a następnie wykonujemy go za pomocą `./myscipt.sh` i uzyskujemy żądane wyjście techcodeview.com.

4) Wyjaśnij cel polecenia echo w skryptach powłoki.

The polecenie echa służy do wyświetlania tekstu lub zmiennych na terminalu. Jest powszechnie używany do drukowania komunikatów, wartości zmiennych i generowania wyników programu.

434

polecenie echa

W tym przykładzie wykonaliśmy `echo` bezpośrednio na terminalu, ponieważ działa to tak samo w skrypcie powłoki.

5) Jak przypisać wartość do zmiennej w skrypcie powłoki?

Zmiennym przypisuje się wartości za pomocą operatora przypisania =.

Na przykład:

#!/bin/bash
# Przypisywanie wartości do zmiennej
imię = Jayesh
wiek=21
echo $imię $wiek

Wyjaśnienie:

  • Zmiennej nazwie przypisano wartość Jayesh.
  • Zmiennej wiek przypisano wartość 21.
  • echo służy do drukowania, a `$nazwa` `$wiek` służy do wywoływania wartości przechowywanej w zmiennych.

435

6) Napisz skrypt powłoki, który jako dane wejściowe pobiera nazwę użytkownika i wita go.

Utwórz skrypt o nazwie `example.sh`.

#!/bin/bash
# Zapytaj użytkownika o jego imię i nazwisko
echo Jak masz na imię?
przeczytaj imię
# Powitaj użytkownika
echo Witaj, $imie! Miło mi cię poznać.

Wyjaśnienie:

  • #!/bin/bash: To jest linia Shebang. Mówi systemowi, aby użył interpretera Bash do wykonania skryptu.
  • # Zapytaj użytkownika o jego imię i nazwisko: To jest komentarz. Zapewnia kontekst dotyczący nadchodzącego kodu. Komentarze są ignorowane przez tłumacza.
  • echo Jak się nazywasz?: Polecenie echo służy do wyświetlania tekstu w cudzysłowie na terminalu.
  • read name: Polecenie read czeka, aż użytkownik wprowadzi tekst i zapisuje go w nazwie zmiennej.
  • echo Witaj, $imię! Miło cię poznać.: Ta linia używa polecenia echo do wydrukowania wiadomości powitalnej zawierającej wartość zmiennej name, która została pobrana z danych wprowadzonych przez użytkownika.

436

7) Jak dodać komentarze do skryptu powłoki?

Komentarze w skryptach powłoki służą do zapewnienia wyjaśnień lub kontekstu kodu. Są one ignorowane przez tłumacza i są przeznaczone wyłącznie dla ludzi czytających scenariusz. Możesz dodawać komentarze, używając symbolu #.

#!/bin/bash
# To jest komentarz wyjaśniający cel skryptu
powtórz GFG

8) Utwórz skrypt powłoki, który sprawdza, czy w bieżącym katalogu istnieje plik.

Oto skrypt sprawdzający, czy w bieżącym katalogu istnieje plik o nazwie example.txt:

#!/bin/bash
plik=przykład.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
echo Plik istnieje: $plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=example.txt: Ta linia definiuje plik zmiennych i przypisuje mu wartość example.txt. Możesz zastąpić tę nazwę plikiem, który chcesz sprawdzić.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Warunek [ -e $plik ] sprawdza, czy plik określony przez wartość zmiennej pliku istnieje. Flaga -e służy do sprawdzania istnienia pliku.
  4. echo Plik istnieje: $plik: Jeśli warunek jest spełniony (tj. plik istnieje), w tej linii zostanie wyświetlony komunikat wskazujący, że plik istnieje, wraz z nazwą pliku.
  5. else: Jeśli warunek jest fałszywy (tzn. plik nie istnieje), skrypt wykonuje kod z gałęzi else.
  6. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że określony plik nie został znaleziony, wraz z jego nazwą.
  7. fi: Ta linia oznacza koniec instrukcji if.
Znalezienie pliku

Znalezienie pliku

9) Jaka jest różnica pomiędzy pojedynczymi cudzysłowami („) i podwójnymi cudzysłowami () w skryptach powłoki?

Pojedyncze cudzysłowy („) i podwójne cudzysłowy () służą do umieszczania ciągów znaków w skryptach powłoki, ale zachowują się inaczej:

  • Pojedyncze cudzysłowy: wszystko pomiędzy pojedynczymi cudzysłowami jest traktowane jako ciąg znaków. Nazwy zmiennych i większość znaków specjalnych nie są rozwijane.
  • Podwójne cudzysłowy: Zmienne i niektóre znaki specjalne w podwójnych cudzysłowach są rozwijane. Treść podlega podstawieniu zmiennych i podstawieniu poleceń.

#!/bin/bash

abcd=Witam
echo „$abcd” # Dane wyjściowe: $abcd
echo $abcd # Wynik: Witam

10) Jak można używać argumentów wiersza poleceń w skrypcie powłoki?

Argumenty wiersza poleceń to wartości dostarczane do skryptu podczas jego wykonywania. Dostęp do nich można uzyskać w skrypcie za pomocą specjalnych zmiennych, takich jak 1 $, 2 $ itd., gdzie 1 $ reprezentuje pierwszy argument, 2 $ reprezentuje drugi argument i tak dalej.

Na przykład: Jeśli nasza nazwa skryptu w `example.sh`

#!/bin/bash

echo Nazwa skryptu: $0
echo Pierwszy argument: $1
echo Drugi argument: 2 $

Jeśli uruchomimy skrypt z `.example.sh hello_1 hello_2`, wyświetli się:

argumenty cli

argumenty cli

11) Jak używać pętli for do iteracji po liście wartości?

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

owoce=(jabłko banan wiśnia data)
dla owoców w ${fruits[@]}; Do
echo Aktualny owoc: $owoc
zrobione

Wyjaśnienie:

Linia `fruits=` tworzy tablicę o nazwie owoce zawierającą cztery elementy: jabłko, banan, wiśnia i data.

  • dla owoców w ${fruits[@]}; do: Ta linia rozpoczyna pętlę for. Oto znaczenie każdej części:
  • dla owoców: deklaruje zmienną pętli zwaną owocami. W każdej iteracji pętli Fruit będzie przechowywać wartość bieżącego elementu z tablicy Fruits.
  • ${fruits[@]}: To jest rozwinięcie tablicy, które pobiera wszystkie elementy z tablicy Fruits. Składnia ${…} gwarantuje, że każdy element będzie traktowany jako oddzielny element.
  • do: To słowo kluczowe oznacza początek treści pętli.
  • echo Bieżący owoc: $owoc: Wewnątrz pętli w tej linii używane jest polecenie echo do wyświetlenia bieżącej wartości zmiennej owocowej pętli. Wypisuje komunikat w rodzaju Bieżący owoc: jabłko dla każdego owocu w tablicy.
  • gotowe: To słowo kluczowe oznacza koniec treści pętli. Informuje skrypt, że pętla została zakończona.
dla pętli

dla pętli

12) Napisz skrypt powłoki, który oblicza sumę liczb całkowitych od 1 do N za pomocą pętli.

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

echo Podaj liczbę (N):
przeczytaj N
suma=0
for (( i=1; i<=$N; i++ )); Do
suma=$((suma + i))
zrobione
echo Suma liczb całkowitych od 1 do $N to: $sum

Wyjaśnienie:
Skrypt rozpoczyna się od prośby o wprowadzenie liczby (N) za pomocą polecenia read. Ta liczba określi, ile razy pętla zostanie uruchomiona.

  1. Suma zmiennej jest inicjowana na 0. Ta zmienna będzie śledzić sumę liczb całkowitych.
  2. Pętla for zaczyna się od for (( i=1; i<=$N; i++ )). Ta struktura pętli służy do powtarzania zestawu działań określoną liczbę razy, w tym przypadku od 1 do wartości N.
  3. Wewnątrz pętli dzieją się następujące rzeczy:
    • i=1 ustawia zmienną pętli i na 1 na początku każdej iteracji.
    • Warunek pętli i<=$N sprawdza, czy i jest nadal mniejsze lub równe podanej liczbie N.
    • Jeżeli warunek jest spełniony, wykonywane jest ciało pętli.
    • sum=$((suma + i)) oblicza nową wartość sumy, dodając do niej bieżącą wartość i. Spowoduje to dodanie liczb całkowitych od 1 do bieżącej wartości i.
  4. Po każdej iteracji i++ zwiększa wartość i o 1.
  5. Pętla działa dopóki warunek i<=$N nie stanie się fałszywy (kiedy i stanie się większe niż N).
  6. Po zakończeniu pętli skrypt wyświetla sumę liczb całkowitych od 1 do wprowadzonej liczby N.

439

13) Utwórz skrypt, który wyszukuje określone słowo w pliku i zlicza jego wystąpienia.

Utwórz nazwę skryptu `word_count.sh`

#!/bin/bash

echo Wpisz szukane słowo:
przeczytaj słowo_celowe
echo Podaj nazwę pliku:
przeczytaj nazwę pliku
liczba=$(grep -o -w $słowo_docelowe $nazwa pliku | wc -l)
echo Słowo „$target_word” pojawia się $count razy w „$filename”.

Wyjaśnienie:

  • echo Wpisz słowo do wyszukania:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o wprowadzenie słowa, którego chce szukać w pliku.
  • read target_word: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie target_word.
  • echo Wpisz nazwę pliku:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o podanie nazwy pliku, który chce przeszukać.
  • read filename: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie filename.
  • count=$(grep -o -w $target_word $nazwa pliku | wc -l): Ta linia wykonuje główną pracę skryptu. Rozłóżmy to dalej:
    • grep -o -w $słowo_docelowe $nazwa pliku: Ta część polecenia wyszukuje wystąpienia słowa_docelowego w określonej nazwie pliku. Opcje -o i -w zapewniają, że zliczane będą tylko dopasowania całych słów.
    • |: To jest potok, który pobiera dane wyjściowe poprzedniego polecenia i wysyła je jako dane wejściowe do następnego polecenia.
    • wc -l: Ta część polecenia wykorzystuje polecenie wc do zliczenia liczby wierszy na wejściu. Opcja -l specjalnie zlicza linie.
    • Całe polecenie oblicza liczbę wystąpień słowa_docelowego w pliku i przypisuje tę liczbę do zmiennej coun

441

14) Wyjaśnij różnice pomiędzy standardowym wyjściem (stdout) i standardowym wyjściem błędów (stderr).

Główna różnica między standardowym wyjściem (stdout) a standardowym błędem (stderr) jest następująca:

  • Standardowe wyjście (stdout): Jest to domyślny strumień wyjściowy, do którego trafiają zwykłe dane wyjściowe polecenia. Domyślnie jest wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą>.
  • Błąd standardowy (stderr): Jest to strumień wyjściowy komunikatów o błędach i ostrzeżeń. Domyślnie jest również wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą 2>.

15) Wyjaśnij koncepcję instrukcji warunkowych w skryptach powłoki.

Instrukcje warunkowe w skryptach powłoki pozwalają nam podejmować decyzje i kontrolować przebieg naszego scenariusza w oparciu o określone warunki. Umożliwiają one naszemu skryptowi wykonywanie różnych zestawów poleceń w zależności od tego, czy dany warunek jest prawdziwy, czy fałszywy. Podstawowymi instrukcjami warunkowymi w skryptach powłoki są instrukcja if, instrukcja elif (opcjonalna) i instrukcja else (opcjonalna).

Oto podstawowa struktura instrukcji warunkowej w skrypcie powłoki:

jeśli [warunek]; Następnie
# Polecenia do wykonania, jeśli warunek jest prawdziwy
elif [inny_warunek]; Następnie
# Polecenia do wykonania, jeśli inny_warunek jest prawdziwy (opcjonalnie)
w przeciwnym razie
# Polecenia do wykonania, jeśli żaden z warunków nie jest spełniony (opcjonalnie)
Być

Wyjaśnienie:

  • [warunek] = Polecenie, które ocenia warunek i zwraca prawdziwy (0) lub fałszywy (niezerowy) status wyjścia.
  • then = Jest to słowo kluczowe wskazujące, że następujące po nim polecenia zostaną wykonane, jeśli warunek ma wartość true.
  • elif = (skrót od else if) Jest to sekcja, która pozwala nam określić dodatkowe warunki do sprawdzenia.
  • else = jest to sekcja zawierająca polecenia, które zostaną wykonane, jeśli żaden z warunków nie zostanie spełniony.
  • fi = Jest to słowo kluczowe oznaczające koniec bloku warunkowego.

16) Jak odczytać linie z pliku w skrypcie powłoki?

Do czytaj linie z pliku w skrypcie powłoki, możemy użyć różnych metod, ale jednym z powszechnych podejść jest użycie pętli while w połączeniu z poleceniem read. Oto jak możemy to zrobić:

#!/bin/bash
plik=/home/jayeshkumar/jayesh.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
podczas gdy IFS= czytaj -r linia; Do
echo Odczytana linia: $line
# Dodaj tutaj logikę przetwarzania
gotowe <$plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=/home/jayeshkumar/jayesh.txt: Ta linia definiuje plik zmiennych i przypisuje pełną ścieżkę do pliku jayesh.txt w katalogu /home/jayeshkumar. Zmień tę ścieżkę, aby odpowiadała rzeczywistej ścieżce pliku, który chcesz przeczytać.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Sprawdza, czy plik określony przez zmienną $file istnieje. Flaga -e sprawdza istnienie pliku.
  4. podczas gdy IFS= czytaj -r linia; do: Ta linia inicjuje pętlę while, która odczytuje linie z pliku.
    • IFS=: IFS (wewnętrzny separator pól) jest ustawiony na pustą wartość, aby zachować spacje początkowe i końcowe.
    • read -r line: odczytuje bieżącą linię z pliku i zapisuje ją w linii zmiennej.
  5. echo Odczyt linii: $line: Ta linia drukuje zawartość linii, która została odczytana z pliku. Zmienna $line zawiera zawartość bieżącej linii.
  6. # Dodaj tutaj logikę przetwarzania: To jest komentarz zastępczy, w którym możesz dodać własną logikę przetwarzania każdej linii. Na przykład możesz przeanalizować wiersz, wyodrębnić informacje lub wykonać określone działania w oparciu o treść.
  7. gotowe <$plik: Oznacza to koniec pętli while. Plik < $przekierowuje zawartość pliku do odczytu przez pętlę.
  8. else: Jeśli plik nie istnieje (warunek w instrukcji if jest fałszywy), skrypt wykonuje kod z gałęzi else.
  9. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że nie znaleziono określonego pliku.
  10. fi: Ta linia oznacza koniec instrukcji if.
odczytanie pliku

odczytanie pliku

Tutaj użyliśmy ` pw ` polecenie, aby uzyskać ścieżkę bieżącego katalogu.

17) Napisz w skrypcie powłoki funkcję obliczającą silnię podanej liczby.

Oto skryptobliczyć silniędanego numeru.

#!/bin/bash
# Zdefiniuj funkcję do obliczenia silni
oblicz_czynnik() {
liczba = 1 USD
fakt=1
for ((i=1; i<=num; i++)); Do
fakt=$((fakt * i))
zrobione
powtórz fakt
}
# Poproś użytkownika o wprowadzenie numeru
echo Wpisz liczbę:
przeczytaj numer_wejściowy
# Wywołaj funkcjękalkuluj_czynnikową z numerem wejściowym
Factorial_result=$(oblicz_czynnik $input_num)
# Wyświetl wynik silni
echo Silnia wartości $input_num to: $factorial_result

Wyjaśnienie:

  1. Skrypt zaczyna się od linii #!/bin/bash określającej interpreter.
  2. call_factorial() jest zdefiniowana jako funkcja. Przyjmuje jeden argument, num, który jest liczbą, dla której należy obliczyć silnię.
  3. Wewnątrz funkcji fakt jest inicjowany na 1. Ta zmienna będzie przechowywać wynik silni.
  4. Pętla for iteruje od 1 do podanej liczby (num). W każdej iteracji mnoży bieżącą wartość faktu przez indeks pętli i.
  5. Po zakończeniu pętli zmienna faktu zawiera obliczoną silnię.
  6. Skrypt monituje użytkownika o wprowadzenie liczby za pomocą funkcji read.
  7. Funkcjakalkuluj_czynnik jest wywoływana z liczbą podaną przez użytkownika, a wynik jest zapisywany w zmiennejfactorial_result.
  8. Na koniec skrypt wyświetla obliczony wynik silni.
Silnia

Silnia

18) Jak radzisz sobie z sygnałami takimi jak Ctrl+C w skrypcie powłoki?

W skrypcie powłoki możesz obsługiwać sygnały takie jak Ctrl+C (znane również jako SIGINT) za pomocą polecenia trap. Ctrl+C generuje sygnał SIGINT, gdy użytkownik go naciśnie, aby przerwać działający skrypt lub program. Używając polecenia trap, możesz określić działania, które mają zostać podjęte po odebraniu określonego sygnału. Oto jak obsługujesz sygnały takie jak Ctrl+C w skrypcie powłoki:

#!/bin/bash
posprzątać() {
echo Skrypt przerwany. Wykonywanie czyszczenia…
# Dodaj tutaj swoje działania czyszczące
wyjście 1
}
# Ustaw pułapkę, aby wywołać funkcję czyszczenia po odebraniu Ctrl+C (SIGINT).
czyszczenie pułapek SIGINT
# Reszta skryptu
echo Bieganie…
spać 10
echo Zakończono.

Obsługa sygnałów jest ważna, aby skrypty były niezawodne i sprawnie obsługiwały nieoczekiwane zakłócenia. Możesz dostosować funkcję czyszczenia do swoich konkretnych potrzeb, takich jak zamykanie plików, zatrzymywanie procesów lub rejestrowanie informacji przed zakończeniem skryptu.

Wyjaśnienie:

  1. #!/bin/bash: Ta linia określa interpreter, który będzie używany do uruchamiania skryptu.
  2. cleanup() { … }: Definiuje funkcję o nazwie sprzątanie. Wewnątrz tej funkcji możesz uwzględnić wszelkie akcje, które należy wykonać w przypadku przerwania skryptu, takie jak zamknięcie plików, zwolnienie zasobów lub wykonanie innych zadań czyszczących.
  3. czyszczenie pułapek SIGINT: Polecenie pułapki służy do skonfigurowania procedury obsługi sygnału. W tym przypadku określa, że ​​po odebraniu sygnału SIGINT (Ctrl+C) powinna zostać wykonana funkcja czyszcząca.
  4. echo Działa…, śpi 10, echo Zakończono.: To tylko przykładowe polecenia symulujące wykonanie skryptu.

446

19) Utwórz skrypt, który sprawdza i usuwa zduplikowane linie w pliku tekstowym.

Oto nasz skrypt linuksowy, w którym usuniemy zduplikowane linie z pliku tekstowego.

#!/bin/bash
plik_wejściowy=plik wejściowy.txt
plik_wyjściowy=plik wyjściowy.txt
sortuj $plik_wejściowy | uniq> $plik_wyjściowy
echo Pomyślnie usunięto zduplikowane linie.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), który wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. Zmienna input_file jest ustawiona na nazwę pliku wejściowego zawierającego zduplikowane linie (zmień tę nazwę na rzeczywistą nazwę pliku wejściowego).
  3. Zmienna plik_wyjściowy jest ustawiona na nazwę pliku wyjściowego, z którego zostaną usunięte duplikaty (zmień tę nazwę na żądaną nazwę pliku wyjściowego).
  4. Skrypt używa polecenia sort do sortowania wierszy w pliku wejściowym. Sortowanie linii zapewnia zgrupowanie zduplikowanych linii.
  5. Posortowane linie są następnie przepuszczane przez polecenie uniq, które usuwa kolejne zduplikowane linie. Dane wyjściowe tego procesu są przekierowywane do pliku wyjściowego.
  6. Po usunięciu duplikatów skrypt wyświetla komunikat o powodzeniu.
usuwanie zduplikowanych linii

usuwanie zduplikowanych linii

Tutaj używamy ` kot `, aby wyświetlić tekst znajdujący się w pliku tekstowym.

20) Napisz skrypt generujący bezpieczne losowe hasło.

Oto nasz skrypt generujący bezpieczne losowe hasło.

#!/bin/bash
# Funkcja generowania losowego hasła
wygeneruj_hasło() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Wywołaj funkcję i zapisz wygenerowane hasło
hasło=$(wygeneruj_hasło)
echo Wygenerowane hasło: $password

Uwaga: Użytkownik może odpowiednio zmienić długość hasła, zastępując cyfrę `12`.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Funkcja generate_password służy do generowania losowego hasła. Oto jak to działa:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 dzieli przefiltrowane losowe dane na linie o szerokości 12 znaków każda.
    • head -n 1 wybiera pierwszą linię, skutecznie dając nam losową sekwencję znaków o długości 12.
  3. Do zmiennej hasła przypisywany jest wynik wywołania funkcji generate_password.
  4. Na koniec wygenerowane hasło jest wyświetlane za pomocą echa.

448

21) Napisz skrypt powłoki, który obliczy całkowity rozmiar wszystkich plików w katalogu.

Oto skrypt powłoki obliczający całkowity rozmiar wszystkich plików w katalogu.

#!/bin/bash
katalog=/ścieżka/do/twojego/katalogu
total_size=$(du -csh $katalog | grep total | awk „{print $1}”)
echo Całkowity rozmiar plików w katalogu $: $total_size

Wyjaśnienie:

  1. Skrypt zaczyna się od znaku #!/bin/bash shebang, wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Zmienna katalogu jest ustawiona na ścieżkę katalogu, dla którego chcesz obliczyć całkowity rozmiar pliku. Zastąp /path/to/your/directory rzeczywistą ścieżką.
  3. Polecenie du służy do szacowania wykorzystania przestrzeni plików. Stosowane opcje to:
    • -c: Wygeneruj sumę całkowitą.
    • -s: Wyświetla tylko całkowity rozmiar określonego katalogu.
    • -h: Rozmiar wydruku w formacie czytelnym dla człowieka (np. KB, MB, GB).
  4. Dane wyjściowe du są przesyłane do grep total w celu odfiltrowania linii zawierającej całkowity rozmiar.
  5. awk „{print $1}” służy do wyodrębnienia pierwszego pola (całkowitego rozmiaru) z linii.
  6. Obliczony całkowity rozmiar jest przechowywany w zmiennej total_size.
  7. Na koniec skrypt wyświetla całkowity rozmiar za pomocą echo.
Całkowity rozmiar plików

Całkowity rozmiar plików

Tutaj użyliśmy ` pw ` polecenie, aby zobaczyć bieżącą ścieżkę katalogu.

22) Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki.

Funkcja `jeśli`Staiment Oświadczenie „elif”.
Zamiar Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki. Zapewnia alternatywne warunki umożliwiające sprawdzenie, czy początkowy warunek if jest fałszywy.
stosowanie Używany do warunku początkowego. Używane po początkowym warunku if w celu sprawdzenia dodatkowych warunków.
liczba bloków Może mieć tylko jeden, jeśli jest blokowany. Może mieć wiele bloków elif, ale tylko jeden blok else (opcjonalnie).
Wykonanie Wykonuje blok kodu powiązany z instrukcją if, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, wykonywany jest blok else (jeśli występuje) (opcjonalnie). Sprawdza każdy warunek elif w kolejności. Jeśli jeden warunek elif jest prawdziwy, wykonywany jest odpowiedni blok kodu, a skrypt kończy cały blok warunkowy. Jeśli żaden z warunków elif nie jest spełniony, wykonywany jest blok else (jeśli występuje).
Struktury zagnieżdżone Można je zagnieżdżać w innych blokach if, elif lub else. Nie można go zagnieżdżać w innym bloku elif, ale można go użyć w bloku if lub else.

Rozumiemy to na przykładzie.

#!/bin/bash
liczba=5
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
w przeciwnym razie
echo $liczba nie jest większa niż 10
Być
Echo ---
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
elif [$liczba -równ. 10]; Następnie
echo $liczba jest równa 10
w przeciwnym razie
echo $liczba jest mniejsza niż 10
Być

Wyjaśnienie:

W tym przykładzie pierwszy blok if sprawdza, czy liczba jest większa niż 10. Jeśli nie, wypisuje komunikat wskazujący, że liczba nie jest większa niż 10. Drugi blok z instrukcjami elif sprawdza po kolei wiele warunków, aż jeden z nich będzie prawdziwy. W tym przypadku, ponieważ wartość liczby wynosi 5, wynikiem będzie:

różnica if_elif

różnica if_elif

23) Jak używać pętli while do wielokrotnego wykonywania poleceń?

Pętla while jest używana w skryptach powłoki do wielokrotnego wykonywania zestawu poleceń, o ile określony warunek jest spełniony. Pętla kontynuuje wykonywanie poleceń, aż warunek stanie się fałszywy.

Oto podstawowa składnia pętli while:

podczas gdy [warunek]; Do
# Polecenia do wykonania
zrobione

Wyjaśnienie:

  1. Pętla „while” zaczyna się od słowa kluczowego „while”, po którym następuje warunek ujęty w nawiasy kwadratowe „[ ]”.
  2. Ciało pętli zawierające polecenia do wykonania jest ujęte w słowa kluczowe „do” i „done”.
  3. Pętla najpierw sprawdza warunek. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w treści pętli. Po wykonaniu treści pętli warunek jest ponownie sprawdzany i proces jest powtarzany, aż warunek stanie się fałszywy.

Przykład: Jeśli chcemy wydrukować liczby od 1 do 5

#!/bin/bash
licznik=1
podczas gdy [ $licznik -le 5 ]; Do
echo Numer: $licznik
licznik=$((licznik + 1))
zrobione

Wyjaśnienie:

  • Zmienna licznika jest ustawiona na 1.
  • Pętla while sprawdza, czy wartość licznika jest mniejsza lub równa 5. Dopóki ten warunek jest spełniony, pętla kontynuuje wykonywanie.
  • Wewnątrz pętli bieżąca wartość licznika jest drukowana za pomocą echo.
  • Licznik jest zwiększany o 1 za pomocą wyrażenia $((licznik + 1)).
pętla while

pętla while

24) Utwórz skrypt powłoki, który znajdzie i wyświetli listę wszystkich pustych plików w katalogu.

Skrypt powłoki, którego możesz użyć do znalezienia i wyświetlenia wszystkich pustych plików w katalogu za pomocą poleceń `find` i `stat`:

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie: $0
wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie
echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być
echo Puste pliki w katalogu $:
znajdź katalog $ -typ f -pusty

Wyjaśnienie:

  1. ` #!/bin/bash `: Nazywa się to shebang i mówi systemowi operacyjnemu, aby użył powłoki Bash do interpretacji i wykonania skryptu.
  2. ` katalog = 1 $ ″ `: Ta linia przypisuje pierwszy argument wiersza poleceń (oznaczony jako $1) do zmiennej ` informator `.
  3. ` if [ -z $katalog ]; Następnie `: Ta linia rozpoczyna instrukcję if, która sprawdza, czy ` informator ` zmienna jest pusta (-z sprawdza pusty ciąg znaków).
  4. ` echo Użycie: $0 `: Jeśli katalog jest pusty, ta linia wyświetla komunikat o użyciu, gdzie ` 0 dolarów ` oznacza nazwę skryptu.
  5. ` wyjście 1 `: Ta linia kończy skrypt z kodem zakończenia ` 1 `, wskazując błąd.
  6. ` Być `: Ta linia oznacza koniec ` Jeśli ` oświadczenie.
  7. ` Jeśli [ ! -d $katalog]; Następnie `: Spowoduje to uruchomienie kolejnej instrukcji if w celu sprawdzenia, czy podany katalog istnieje (` -D ` testuje katalog).
  8. ` echo Błąd: „katalog $” nie jest prawidłowym katalogiem. `: Jeśli podany katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. ` wyjście 1 `: Kończy skrypt z kodem zakończenia ` 1 `.
  10. ` Być `: Oznacza koniec drugiego ` jeśli` oświadczenie.
  11. ` echo Puste pliki w katalogu $: `: Jeśli do tej pory wszystko było w porządku, w tej linii zostanie wyświetlony komunikat wskazujący, że skrypt wyświetli listę pustych plików w określonym katalogu.
  12. ` znajdź katalog $ -typ f -pusty `: Ta linia używa ` znajdować ` polecenie wyszukiwania pustych plików (` -pusty `) typu zwykłe pliki (` -wpisz f `) w określonym katalogu. Następnie wyświetla listę tych pustych plików.
Znajdowanie pustych plików

Znajdowanie pustych plików

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/

25) Jaki jest cel polecenia read w skryptach powłoki?

Polecenie read w skryptach powłoki pozwala skryptowi poprosić Cię o informacje. To tak, jakby komputer zadał Ci pytanie i czekał na Twoją odpowiedź. Jest to przydatne w przypadku skryptów, które wymagają wpisania czegoś lub gdy skrypt musi pracować z informacjami z plików. Polecenie read pomaga skryptowi zatrzymać się i poczekać na to, co wpiszesz, a następnie może wykorzystać te informacje do wykonania dalszych czynności w skrypcie.

Składnia polecenia odczytu:

read variable_name>

Przykład : Jeśli chcemy przyjąć nazwę jako dane wejściowe od użytkownika, aby ją wydrukować.

#!/bin/bash
echo Proszę podać swoje imię:
przeczytaj imię
echo Witaj, $imie!

453

czytaj imię

Podsumowując, polecenie read służy do przechwytywania danych wprowadzanych przez użytkownika lub danych z plików w skryptach powłoki, dzięki czemu skrypty są bardziej interaktywne i wszechstronne.

26) Napisz skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

Oto skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie: $0
wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie

echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być

katalog $ CD || wyjście 1

dla pliku w *; Do
jeśli [ -f $plik ]; Następnie
nowa nazwa=$(echo $plik | tr „A-Z” „a-z”)
[ $plik != $nowa nazwa ] && mv $plik $nowa nazwa
Być
zrobione

Wyjaśnienie:

  1. #!/bin/bash : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. katalog = 1 $ ″ : Ta linia przypisuje pierwszy argument wiersza poleceń do katalogu zmiennych.
  3. if [ -z $katalog ]; Następnie : Ta linia sprawdza, czy zmienna katalogu jest pusta (podczas uruchamiania skryptu nie podano żadnego argumentu).
  4. echo Użycie: $0 : Jeśli katalog jest pusty, w tej linii zostanie wydrukowana informacja o użyciu zawierająca nazwę skryptu ($0).
  5. wyjście 1 : Ta linia kończy skrypt z kodem zakończenia 1, wskazującym, że wystąpił błąd.
  6. F i: Oznacza to koniec pierwszej instrukcji if.
  7. Jeśli [ ! -d $katalog]; Następnie : Ta linia sprawdza, czy podany katalog nie istnieje (-d sprawdza katalog).
  8. echo Błąd: „katalog $” nie jest prawidłowym katalogiem. : Jeśli określony katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. wyjście 1 : Opuszcza skrypt z kodem wyjścia 1.
  10. Być : Oznacza koniec drugiej instrukcji if.
  11. katalog $ CD || wyjście 1 : Zmienia bieżący katalog roboczy na określony katalog. Jeśli zmiana katalogu nie powiedzie się (np. katalog nieistniejący), skrypt zakończy działanie z kodem błędu.
  12. dla pliku w *; Do: I dla pliku w *; Do: inicjuje pętlę, która iteruje po wszystkich elementach w bieżącym katalogu (* pasuje do wszystkich nazw plików).
  13. jeśli [ -f $plik ]; Następnie : Sprawdza, czy bieżący element iteracji pętli jest zwykłym plikiem (-f sprawdza zwykły plik).
  14. nowa nazwa=$(echo $plik | tr „A-Z” „a-z”) : Konwertuje bieżącą nazwę pliku ($file) na małe litery za pomocą polecenia tr i zapisuje wynik w zmiennej newname.
  15. [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa : porównuje oryginalną nazwę pliku z nową nazwą pliku zawierającą małe litery. Jeśli są różne, zmienia nazwę pliku za pomocą polecenia mv.
  16. Być : Oznacza koniec wewnętrznej instrukcji if.
  17. zrobione : Oznacza koniec pętli.

454

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/test

27) Jak można używać operacji arytmetycznych w skrypcie powłoki?

Operacje arytmetyczne można wykonywać w skrypcie powłoki przy użyciu różnych wbudowanych metod. Powłoka zapewnia mechanizmy prostych obliczeń arytmetycznych przy użyciu rozwinięcia arytmetycznego, takie jak:

  1. Rozszerzenie arytmetyczne ($((…)))
  2. Używanie polecenia wyraż
  3. Używanie polecenia let

Oto nasz skrypt powłoki wyjaśniający wszystkie trzy metody operacji arytmetycznych.

#!/bin/bash
liczba1=10
liczba2=5

#Rozwinięcie arytmetyczne ($((…)))

wynik=$((liczba1 + liczba2))
echo Suma: $wynik

#Używanie polecenia wyraż

suma=$(wyrażenie $num1 + $num2)
echo Suma: $suma

#Używanie polecenia let

niech suma = liczba1 + liczba2
echo Suma: $suma

Wyjaśnienie:

  1. `#!/bin/bash` : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. `liczba1=10` i ` liczba2=5` : Linie te przypisują wartości 10 i 5 zmiennym ` numer1 ` i ` liczba2 `, odpowiednio.
  3. `#Rozwinięcie arytmetyczne ($((…)))` : To jest komentarz wskazujący początek sekcji demonstrującej rozwinięcie arytmetyczne.
  4. `wynik=$((liczba1 + liczba2))` : W tej linii zastosowano rozwinięcie arytmetyczne do obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` wynik ` zmienna.
  5. `echo Suma: $wynik` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` wynik ` zmienna.
  6. `#Używanie polecenia wyrażenia` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` wyr ` polecenie wykonywania operacji arytmetycznych.
  7. `suma=$(wyrażenie $num1 + $num2)` : Ta linia używa ` wyr ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` suma ` zmienna. Należy pamiętać, że ` wyr Polecenie ` wymaga spacji wokół operatorów.
  8. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
  9. `#Używanie polecenia let` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` pozwalać ` polecenie wykonywania operacji arytmetycznych.
  10. `niech suma = liczba1 + liczba2″` : Ta linia używa ` pozwalać ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przypisuje wynik do ` suma ` zmienna. ` pozwalać Polecenie ` nie wymaga spacji wokół operatorów.
  11. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
arytmetyka

arytmetyka

28) Utwórz skrypt sprawdzający, czy host sieciowy jest osiągalny.

Oto prosty skrypt powłoki, który używa polecenia ping do sprawdzenia, czy host sieciowy jest osiągalny:

#!/bin/bash
gospodarz = 1 $ ″
jeśli [ -z $host ]; Następnie
echo Użycie: $0
wyjście 1
Być
ping -c 4 $host

jeśli [$? -równ. 0]; Następnie
echo $host jest osiągalny.
w przeciwnym razie
echo $host jest nieosiągalny.
Być

Wyjaśnienie:

  1. Jako argument przyjmuje nazwę hosta lub adres IP i sprawdza, czy argument został podany.
  2. Jeśli nie podano żadnego argumentu, wyświetla komunikat o użyciu i kończy działanie.
  3. Używa polecenia ping z opcją -c 4 do wysyłania czterech żądań echa ICMP do określonego hosta.
  4. Po uruchomieniu polecenia ping sprawdza status wyjścia ($?). Jeśli status wyjścia wynosi 0, oznacza to, że host jest osiągalny i skrypt wyświetla komunikat o powodzeniu. W przeciwnym razie drukuje komunikat o błędzie.

456

Notatka : Musimy podać nazwę hosta jako argument podczas uruchamiania skryptu. Tutaj użyliśmy google.com

29) Napisz skrypt powłoki, aby znaleźć największy element w tablicy:

Oto skrypt powłoki umożliwiający znalezienie największego elementu w tablicy.

#!/bin/bash
# Zadeklaruj tablicę
tablica=(3 56 24 89 67)

# Zainicjuj zmienną, aby przechowywać maksymalną wartość, zaczynając od pierwszego elementu

max=${tablica[0]}

# Iteruj po tablicy

dla liczby w ${tablica[@]}; Do

# Porównaj każdy element z bieżącym maksimum

jeśli ((liczba> maks.)); Następnie
maks.=$liczba
Być
zrobione

# Wydrukuj wartość maksymalną

echo Maksymalny element tablicy to: $max

Wyjaśnienie:

  1. ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. ` tablica=(3 56 24 89 67) `: Tablica jest zadeklarowana i zainicjowana wartościami.
  3. ` max=${tablica[0]} `: `max` jest inicjalizowane pierwszym elementem tablicy.
  4. ` dla liczby w ${tablica[@]}; Do `: Pętla „for” służy do iteracji po elementach tablicy.
  5. ` jeśli ((liczba> maks.)); Następnie `: Instrukcja `if` sprawdza, czy bieżący element `num` jest większy od bieżącego maksimum `max`.
  6. ` max=$num`: Jeśli`num ` jest większe niż `max`, `max` jest aktualizowane o wartość num.
  7. ` zrobione `: Pętla „for” jest zamknięta.
  8. ` echo Maksymalny element tablicy to: $max `: Na koniec skrypt wypisuje maksymalną wartość znalezioną w tablicy.
461

największa liczba

30) Napisz skrypt obliczający sumę elementów w tablicy.

#!/bin/bash

# Zadeklaruj tablicę

tablica=(1 65 22 19 94)

# Zainicjuj zmienną, aby zapisać sumę

suma=0

# Iteruj po tablicy i dodaj każdy element do sumy

dla liczby w ${tablica[@]}; Do
rano=$((rano + rano))
zrobione

# Wydrukuj sumę

echo Suma elementów tablicy wynosi: $sum

Wyjaśnienie:

` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.

` tablica=(1 65 22 19 94) `: Tablica jest zadeklarowana i zainicjowana wartościami.

` suma=0 `:` suma ` jest inicjalizowane na zero, aby przechowywać sumę elementów.

` dla liczby w ${tablica[@]}; Do `: A` Do Pętla ` służy do iteracji po elementach tablicy.

` rano=$((rano + rano)) `: Wewnątrz pętli każdy element ` na jednego ` dodaje się do ` suma ` zmienna.

` zrobione `: ` Do ` pętla jest zamknięta.

`echo Suma elementów tablicy wynosi: $sum`: Na koniec skrypt wypisuje sumę wszystkich elementów tablicy.

462

Suma elementów

Dowiedz się więcej o skryptach powłoki

Wniosek

Wszyscy maniacy wiemy, że skrypt powłoki jest bardzo przydatny w zwiększaniu produktywności pracy, a także oszczędzaniu czasu. Tak więc w tym artykule omówiliśmy 30 bardzo przydatnych i najbardziej oszukańczych przykładów skryptów powłoki . Mamy nadzieję, że ten kompletny przewodnik na temat przykładowych skryptów powłoki pomoże Ci zrozumieć wszystko na temat skryptów powłoki.




echo Pierwszy argument:
echo Drugi argument: 2 $

Jeśli uruchomimy skrypt z `.example.sh hello_1 hello_2`, wyświetli się:

argumenty cli

argumenty cli

11) Jak używać pętli for do iteracji po liście wartości?

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

owoce=(jabłko banan wiśnia data)
dla owoców w ${fruits[@]}; Do
echo Aktualny owoc: $owoc
zrobione

Wyjaśnienie:

Linia `fruits=` tworzy tablicę o nazwie owoce zawierającą cztery elementy: jabłko, banan, wiśnia i data.

  • dla owoców w ${fruits[@]}; do: Ta linia rozpoczyna pętlę for. Oto znaczenie każdej części:
  • dla owoców: deklaruje zmienną pętli zwaną owocami. W każdej iteracji pętli Fruit będzie przechowywać wartość bieżącego elementu z tablicy Fruits.
  • ${fruits[@]}: To jest rozwinięcie tablicy, które pobiera wszystkie elementy z tablicy Fruits. Składnia ${…} gwarantuje, że każdy element będzie traktowany jako oddzielny element.
  • do: To słowo kluczowe oznacza początek treści pętli.
  • echo Bieżący owoc: $owoc: Wewnątrz pętli w tej linii używane jest polecenie echo do wyświetlenia bieżącej wartości zmiennej owocowej pętli. Wypisuje komunikat w rodzaju Bieżący owoc: jabłko dla każdego owocu w tablicy.
  • gotowe: To słowo kluczowe oznacza koniec treści pętli. Informuje skrypt, że pętla została zakończona.
dla pętli

dla pętli

12) Napisz skrypt powłoki, który oblicza sumę liczb całkowitych od 1 do N za pomocą pętli.

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

echo Podaj liczbę (N):
przeczytaj N
suma=0
for (( i=1; i<=$N; i++ )); Do
suma=$((suma + i))
zrobione
echo Suma liczb całkowitych od 1 do $N to: $sum

Wyjaśnienie:
Skrypt rozpoczyna się od prośby o wprowadzenie liczby (N) za pomocą polecenia read. Ta liczba określi, ile razy pętla zostanie uruchomiona.

  1. Suma zmiennej jest inicjowana na 0. Ta zmienna będzie śledzić sumę liczb całkowitych.
  2. Pętla for zaczyna się od for (( i=1; i<=$N; i++ )). Ta struktura pętli służy do powtarzania zestawu działań określoną liczbę razy, w tym przypadku od 1 do wartości N.
  3. Wewnątrz pętli dzieją się następujące rzeczy:
    • i=1 ustawia zmienną pętli i na 1 na początku każdej iteracji.
    • Warunek pętli i<=$N sprawdza, czy i jest nadal mniejsze lub równe podanej liczbie N.
    • Jeżeli warunek jest spełniony, wykonywane jest ciało pętli.
    • sum=$((suma + i)) oblicza nową wartość sumy, dodając do niej bieżącą wartość i. Spowoduje to dodanie liczb całkowitych od 1 do bieżącej wartości i.
  4. Po każdej iteracji i++ zwiększa wartość i o 1.
  5. Pętla działa dopóki warunek i<=$N nie stanie się fałszywy (kiedy i stanie się większe niż N).
  6. Po zakończeniu pętli skrypt wyświetla sumę liczb całkowitych od 1 do wprowadzonej liczby N.

439

13) Utwórz skrypt, który wyszukuje określone słowo w pliku i zlicza jego wystąpienia.

Utwórz nazwę skryptu `word_count.sh`

#!/bin/bash

echo Wpisz szukane słowo:
przeczytaj słowo_celowe
echo Podaj nazwę pliku:
przeczytaj nazwę pliku
liczba=$(grep -o -w $słowo_docelowe $nazwa pliku | wc -l)
echo Słowo „$target_word” pojawia się $count razy w „$filename”.

Wyjaśnienie:

  • echo Wpisz słowo do wyszukania:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o wprowadzenie słowa, którego chce szukać w pliku.
  • read target_word: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie target_word.
  • echo Wpisz nazwę pliku:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o podanie nazwy pliku, który chce przeszukać.
  • read filename: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie filename.
  • count=$(grep -o -w $target_word $nazwa pliku | wc -l): Ta linia wykonuje główną pracę skryptu. Rozłóżmy to dalej:
    • grep -o -w $słowo_docelowe $nazwa pliku: Ta część polecenia wyszukuje wystąpienia słowa_docelowego w określonej nazwie pliku. Opcje -o i -w zapewniają, że zliczane będą tylko dopasowania całych słów.
    • |: To jest potok, który pobiera dane wyjściowe poprzedniego polecenia i wysyła je jako dane wejściowe do następnego polecenia.
    • wc -l: Ta część polecenia wykorzystuje polecenie wc do zliczenia liczby wierszy na wejściu. Opcja -l specjalnie zlicza linie.
    • Całe polecenie oblicza liczbę wystąpień słowa_docelowego w pliku i przypisuje tę liczbę do zmiennej coun

441

14) Wyjaśnij różnice pomiędzy standardowym wyjściem (stdout) i standardowym wyjściem błędów (stderr).

Główna różnica między standardowym wyjściem (stdout) a standardowym błędem (stderr) jest następująca:

  • Standardowe wyjście (stdout): Jest to domyślny strumień wyjściowy, do którego trafiają zwykłe dane wyjściowe polecenia. Domyślnie jest wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą>.
  • Błąd standardowy (stderr): Jest to strumień wyjściowy komunikatów o błędach i ostrzeżeń. Domyślnie jest również wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą 2>.

15) Wyjaśnij koncepcję instrukcji warunkowych w skryptach powłoki.

Instrukcje warunkowe w skryptach powłoki pozwalają nam podejmować decyzje i kontrolować przebieg naszego scenariusza w oparciu o określone warunki. Umożliwiają one naszemu skryptowi wykonywanie różnych zestawów poleceń w zależności od tego, czy dany warunek jest prawdziwy, czy fałszywy. Podstawowymi instrukcjami warunkowymi w skryptach powłoki są instrukcja if, instrukcja elif (opcjonalna) i instrukcja else (opcjonalna).

Oto podstawowa struktura instrukcji warunkowej w skrypcie powłoki:

jeśli [warunek]; Następnie
# Polecenia do wykonania, jeśli warunek jest prawdziwy
elif [inny_warunek]; Następnie
# Polecenia do wykonania, jeśli inny_warunek jest prawdziwy (opcjonalnie)
w przeciwnym razie
# Polecenia do wykonania, jeśli żaden z warunków nie jest spełniony (opcjonalnie)
Być

Wyjaśnienie:

  • [warunek] = Polecenie, które ocenia warunek i zwraca prawdziwy (0) lub fałszywy (niezerowy) status wyjścia.
  • then = Jest to słowo kluczowe wskazujące, że następujące po nim polecenia zostaną wykonane, jeśli warunek ma wartość true.
  • elif = (skrót od else if) Jest to sekcja, która pozwala nam określić dodatkowe warunki do sprawdzenia.
  • else = jest to sekcja zawierająca polecenia, które zostaną wykonane, jeśli żaden z warunków nie zostanie spełniony.
  • fi = Jest to słowo kluczowe oznaczające koniec bloku warunkowego.

16) Jak odczytać linie z pliku w skrypcie powłoki?

Do czytaj linie z pliku w skrypcie powłoki, możemy użyć różnych metod, ale jednym z powszechnych podejść jest użycie pętli while w połączeniu z poleceniem read. Oto jak możemy to zrobić:

#!/bin/bash
plik=/home/jayeshkumar/jayesh.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
podczas gdy IFS= czytaj -r linia; Do
echo Odczytana linia: $line
# Dodaj tutaj logikę przetwarzania
gotowe <$plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=/home/jayeshkumar/jayesh.txt: Ta linia definiuje plik zmiennych i przypisuje pełną ścieżkę do pliku jayesh.txt w katalogu /home/jayeshkumar. Zmień tę ścieżkę, aby odpowiadała rzeczywistej ścieżce pliku, który chcesz przeczytać.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Sprawdza, czy plik określony przez zmienną $file istnieje. Flaga -e sprawdza istnienie pliku.
  4. podczas gdy IFS= czytaj -r linia; do: Ta linia inicjuje pętlę while, która odczytuje linie z pliku.
    • IFS=: IFS (wewnętrzny separator pól) jest ustawiony na pustą wartość, aby zachować spacje początkowe i końcowe.
    • read -r line: odczytuje bieżącą linię z pliku i zapisuje ją w linii zmiennej.
  5. echo Odczyt linii: $line: Ta linia drukuje zawartość linii, która została odczytana z pliku. Zmienna $line zawiera zawartość bieżącej linii.
  6. # Dodaj tutaj logikę przetwarzania: To jest komentarz zastępczy, w którym możesz dodać własną logikę przetwarzania każdej linii. Na przykład możesz przeanalizować wiersz, wyodrębnić informacje lub wykonać określone działania w oparciu o treść.
  7. gotowe <$plik: Oznacza to koniec pętli while. Plik < $przekierowuje zawartość pliku do odczytu przez pętlę.
  8. else: Jeśli plik nie istnieje (warunek w instrukcji if jest fałszywy), skrypt wykonuje kod z gałęzi else.
  9. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że nie znaleziono określonego pliku.
  10. fi: Ta linia oznacza koniec instrukcji if.
odczytanie pliku

odczytanie pliku

Tutaj użyliśmy ` pw ` polecenie, aby uzyskać ścieżkę bieżącego katalogu.

zmienne globalne js

17) Napisz w skrypcie powłoki funkcję obliczającą silnię podanej liczby.

Oto skryptobliczyć silniędanego numeru.

#!/bin/bash
# Zdefiniuj funkcję do obliczenia silni
oblicz_czynnik() {
liczba = 1 USD
fakt=1
for ((i=1; i<=num; i++)); Do
fakt=$((fakt * i))
zrobione
powtórz fakt
}
# Poproś użytkownika o wprowadzenie numeru
echo Wpisz liczbę:
przeczytaj numer_wejściowy
# Wywołaj funkcjękalkuluj_czynnikową z numerem wejściowym
Factorial_result=$(oblicz_czynnik $input_num)
# Wyświetl wynik silni
echo Silnia wartości $input_num to: $factorial_result

Wyjaśnienie:

  1. Skrypt zaczyna się od linii #!/bin/bash określającej interpreter.
  2. call_factorial() jest zdefiniowana jako funkcja. Przyjmuje jeden argument, num, który jest liczbą, dla której należy obliczyć silnię.
  3. Wewnątrz funkcji fakt jest inicjowany na 1. Ta zmienna będzie przechowywać wynik silni.
  4. Pętla for iteruje od 1 do podanej liczby (num). W każdej iteracji mnoży bieżącą wartość faktu przez indeks pętli i.
  5. Po zakończeniu pętli zmienna faktu zawiera obliczoną silnię.
  6. Skrypt monituje użytkownika o wprowadzenie liczby za pomocą funkcji read.
  7. Funkcjakalkuluj_czynnik jest wywoływana z liczbą podaną przez użytkownika, a wynik jest zapisywany w zmiennejfactorial_result.
  8. Na koniec skrypt wyświetla obliczony wynik silni.
Silnia

Silnia

18) Jak radzisz sobie z sygnałami takimi jak Ctrl+C w skrypcie powłoki?

W skrypcie powłoki możesz obsługiwać sygnały takie jak Ctrl+C (znane również jako SIGINT) za pomocą polecenia trap. Ctrl+C generuje sygnał SIGINT, gdy użytkownik go naciśnie, aby przerwać działający skrypt lub program. Używając polecenia trap, możesz określić działania, które mają zostać podjęte po odebraniu określonego sygnału. Oto jak obsługujesz sygnały takie jak Ctrl+C w skrypcie powłoki:

#!/bin/bash
posprzątać() {
echo Skrypt przerwany. Wykonywanie czyszczenia…
# Dodaj tutaj swoje działania czyszczące
wyjście 1
}
# Ustaw pułapkę, aby wywołać funkcję czyszczenia po odebraniu Ctrl+C (SIGINT).
czyszczenie pułapek SIGINT
# Reszta skryptu
echo Bieganie…
spać 10
echo Zakończono.

Obsługa sygnałów jest ważna, aby skrypty były niezawodne i sprawnie obsługiwały nieoczekiwane zakłócenia. Możesz dostosować funkcję czyszczenia do swoich konkretnych potrzeb, takich jak zamykanie plików, zatrzymywanie procesów lub rejestrowanie informacji przed zakończeniem skryptu.

Wyjaśnienie:

  1. #!/bin/bash: Ta linia określa interpreter, który będzie używany do uruchamiania skryptu.
  2. cleanup() { … }: Definiuje funkcję o nazwie sprzątanie. Wewnątrz tej funkcji możesz uwzględnić wszelkie akcje, które należy wykonać w przypadku przerwania skryptu, takie jak zamknięcie plików, zwolnienie zasobów lub wykonanie innych zadań czyszczących.
  3. czyszczenie pułapek SIGINT: Polecenie pułapki służy do skonfigurowania procedury obsługi sygnału. W tym przypadku określa, że ​​po odebraniu sygnału SIGINT (Ctrl+C) powinna zostać wykonana funkcja czyszcząca.
  4. echo Działa…, śpi 10, echo Zakończono.: To tylko przykładowe polecenia symulujące wykonanie skryptu.

446

19) Utwórz skrypt, który sprawdza i usuwa zduplikowane linie w pliku tekstowym.

Oto nasz skrypt linuksowy, w którym usuniemy zduplikowane linie z pliku tekstowego.

#!/bin/bash
plik_wejściowy=plik wejściowy.txt
plik_wyjściowy=plik wyjściowy.txt
sortuj $plik_wejściowy | uniq> $plik_wyjściowy
echo Pomyślnie usunięto zduplikowane linie.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), który wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. Zmienna input_file jest ustawiona na nazwę pliku wejściowego zawierającego zduplikowane linie (zmień tę nazwę na rzeczywistą nazwę pliku wejściowego).
  3. Zmienna plik_wyjściowy jest ustawiona na nazwę pliku wyjściowego, z którego zostaną usunięte duplikaty (zmień tę nazwę na żądaną nazwę pliku wyjściowego).
  4. Skrypt używa polecenia sort do sortowania wierszy w pliku wejściowym. Sortowanie linii zapewnia zgrupowanie zduplikowanych linii.
  5. Posortowane linie są następnie przepuszczane przez polecenie uniq, które usuwa kolejne zduplikowane linie. Dane wyjściowe tego procesu są przekierowywane do pliku wyjściowego.
  6. Po usunięciu duplikatów skrypt wyświetla komunikat o powodzeniu.
usuwanie zduplikowanych linii

usuwanie zduplikowanych linii

Tutaj używamy ` kot `, aby wyświetlić tekst znajdujący się w pliku tekstowym.

20) Napisz skrypt generujący bezpieczne losowe hasło.

Oto nasz skrypt generujący bezpieczne losowe hasło.

#!/bin/bash
# Funkcja generowania losowego hasła
wygeneruj_hasło() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Wywołaj funkcję i zapisz wygenerowane hasło
hasło=$(wygeneruj_hasło)
echo Wygenerowane hasło: $password

Uwaga: Użytkownik może odpowiednio zmienić długość hasła, zastępując cyfrę `12`.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Funkcja generate_password służy do generowania losowego hasła. Oto jak to działa:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 dzieli przefiltrowane losowe dane na linie o szerokości 12 znaków każda.
    • head -n 1 wybiera pierwszą linię, skutecznie dając nam losową sekwencję znaków o długości 12.
  3. Do zmiennej hasła przypisywany jest wynik wywołania funkcji generate_password.
  4. Na koniec wygenerowane hasło jest wyświetlane za pomocą echa.

448

21) Napisz skrypt powłoki, który obliczy całkowity rozmiar wszystkich plików w katalogu.

Oto skrypt powłoki obliczający całkowity rozmiar wszystkich plików w katalogu.

#!/bin/bash
katalog=/ścieżka/do/twojego/katalogu
total_size=$(du -csh $katalog | grep total | awk „{print }”)
echo Całkowity rozmiar plików w katalogu $: $total_size

Wyjaśnienie:

  1. Skrypt zaczyna się od znaku #!/bin/bash shebang, wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Zmienna katalogu jest ustawiona na ścieżkę katalogu, dla którego chcesz obliczyć całkowity rozmiar pliku. Zastąp /path/to/your/directory rzeczywistą ścieżką.
  3. Polecenie du służy do szacowania wykorzystania przestrzeni plików. Stosowane opcje to:
    • -c: Wygeneruj sumę całkowitą.
    • -s: Wyświetla tylko całkowity rozmiar określonego katalogu.
    • -h: Rozmiar wydruku w formacie czytelnym dla człowieka (np. KB, MB, GB).
  4. Dane wyjściowe du są przesyłane do grep total w celu odfiltrowania linii zawierającej całkowity rozmiar.
  5. awk „{print }” służy do wyodrębnienia pierwszego pola (całkowitego rozmiaru) z linii.
  6. Obliczony całkowity rozmiar jest przechowywany w zmiennej total_size.
  7. Na koniec skrypt wyświetla całkowity rozmiar za pomocą echo.
Całkowity rozmiar plików

Całkowity rozmiar plików

Tutaj użyliśmy ` pw ` polecenie, aby zobaczyć bieżącą ścieżkę katalogu.

22) Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki.

Funkcja `jeśli`Staiment Oświadczenie „elif”.
Zamiar Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki. Zapewnia alternatywne warunki umożliwiające sprawdzenie, czy początkowy warunek if jest fałszywy.
stosowanie Używany do warunku początkowego. Używane po początkowym warunku if w celu sprawdzenia dodatkowych warunków.
liczba bloków Może mieć tylko jeden, jeśli jest blokowany. Może mieć wiele bloków elif, ale tylko jeden blok else (opcjonalnie).
Wykonanie Wykonuje blok kodu powiązany z instrukcją if, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, wykonywany jest blok else (jeśli występuje) (opcjonalnie). Sprawdza każdy warunek elif w kolejności. Jeśli jeden warunek elif jest prawdziwy, wykonywany jest odpowiedni blok kodu, a skrypt kończy cały blok warunkowy. Jeśli żaden z warunków elif nie jest spełniony, wykonywany jest blok else (jeśli występuje).
Struktury zagnieżdżone Można je zagnieżdżać w innych blokach if, elif lub else. Nie można go zagnieżdżać w innym bloku elif, ale można go użyć w bloku if lub else.

Rozumiemy to na przykładzie.

#!/bin/bash
liczba=5
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
w przeciwnym razie
echo $liczba nie jest większa niż 10
Być
Echo ---
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
elif [$liczba -równ. 10]; Następnie
echo $liczba jest równa 10
w przeciwnym razie
echo $liczba jest mniejsza niż 10
Być

Wyjaśnienie:

W tym przykładzie pierwszy blok if sprawdza, czy liczba jest większa niż 10. Jeśli nie, wypisuje komunikat wskazujący, że liczba nie jest większa niż 10. Drugi blok z instrukcjami elif sprawdza po kolei wiele warunków, aż jeden z nich będzie prawdziwy. W tym przypadku, ponieważ wartość liczby wynosi 5, wynikiem będzie:

różnica if_elif

różnica if_elif

23) Jak używać pętli while do wielokrotnego wykonywania poleceń?

Pętla while jest używana w skryptach powłoki do wielokrotnego wykonywania zestawu poleceń, o ile określony warunek jest spełniony. Pętla kontynuuje wykonywanie poleceń, aż warunek stanie się fałszywy.

stdin w c

Oto podstawowa składnia pętli while:

podczas gdy [warunek]; Do
# Polecenia do wykonania
zrobione

Wyjaśnienie:

  1. Pętla „while” zaczyna się od słowa kluczowego „while”, po którym następuje warunek ujęty w nawiasy kwadratowe „[ ]”.
  2. Ciało pętli zawierające polecenia do wykonania jest ujęte w słowa kluczowe „do” i „done”.
  3. Pętla najpierw sprawdza warunek. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w treści pętli. Po wykonaniu treści pętli warunek jest ponownie sprawdzany i proces jest powtarzany, aż warunek stanie się fałszywy.

Przykład: Jeśli chcemy wydrukować liczby od 1 do 5

#!/bin/bash
licznik=1
podczas gdy [ $licznik -le 5 ]; Do
echo Numer: $licznik
licznik=$((licznik + 1))
zrobione

Wyjaśnienie:

  • Zmienna licznika jest ustawiona na 1.
  • Pętla while sprawdza, czy wartość licznika jest mniejsza lub równa 5. Dopóki ten warunek jest spełniony, pętla kontynuuje wykonywanie.
  • Wewnątrz pętli bieżąca wartość licznika jest drukowana za pomocą echo.
  • Licznik jest zwiększany o 1 za pomocą wyrażenia $((licznik + 1)).
pętla while

pętla while

24) Utwórz skrypt powłoki, który znajdzie i wyświetli listę wszystkich pustych plików w katalogu.

Skrypt powłoki, którego możesz użyć do znalezienia i wyświetlenia wszystkich pustych plików w katalogu za pomocą poleceń `find` i `stat`:

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie:

W przypadku wszystkich dystrybucji Linuksa skrypt powłoki jest jak magiczna różdżka, która automatyzuje proces, oszczędza czas użytkowników i zwiększa produktywność. Ten samouczek dotyczący skryptowania wprowadzi Cię w ponad 25 przykładów tworzenia skryptów.

Zanim jednak przejdziemy do tematu skrypty powłoki przykłady, przyjrzyjmy się skryptowi powłoki i rzeczywistym przypadkom użycia skryptów powłoki.

Co to jest skrypt powłoki?

Cóż, skorupa jest interfejs wiersza polecenia ( interpreter wiersza poleceń ), który działa w oknie tekstowym, w którym użytkownicy mogą zarządzać poleceniami powłoki i je wykonywać. Z drugiej strony proces pisania zestawu poleceń do wykonania w systemie Linux. Plik zawierający takie instrukcje nazywany jest skryptem bash.

Zastosowania skryptów powłoki

Poniżej znajduje się kilka typowych zastosowań skryptu powłoki:

  • Automatyzacja zadań – Można go używać do automatyzacji powtarzalnych zadań, takich jak regularne tworzenie kopii zapasowych i zadania instalacji oprogramowania.
  • Dostosowywanie - Można używać skryptów powłoki do projektowania środowiska wiersza poleceń i łatwego wykonywania zadań zgodnie z potrzebami.
  • Zarządzanie plikami - Skryptów powłoki można również używać do zarządzania plikami i katalogami oraz manipulowania nimi, na przykład przenoszenia, kopiowania, zmiany nazwy lub usuwania plików.

Przykłady skryptów powłoki w systemie Linux

1) Co oznacza shebang (#!) na początku skryptu powłoki?

The shebang (#!) na początku skryptu wskazuje interpreter, który powinien zostać użyty do wykonania skryptu. Mówi systemowi, która powłoka lub interpreter powinien interpretować polecenia skryptu.

Na przykład: Załóżmy, że mamy skrypt o nazwie mójscript.sh napisane w powłoce Bash:

szulernia

szulernia

W tym przykładzie:

  • Znak #!/bin/bash na początku skryptu wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  • Polecenia echo służą do drukowania komunikatów na terminalu.

2) Jak uruchomić skrypt powłoki z wiersza poleceń?

Aby uruchomić skrypt powłoki z wiersza poleceń, musimy wykonać następujące kroki:

  • Upewnij się, że plik skryptu ma uprawnienia do wykonywania, używając polecenie chmod :
chmod +x myscript.sh>
  • Wykonaj skrypt, używając jego nazwy pliku:
./myscript.sh>

Tutaj musisz wymienić myscript.sh z twoją nazwą skryptu.

3) Napisz skrypt powłoki, który wypisuje plik techcodeview.com na terminalu.

Utwórz nazwę skryptu `myscript.sh` (używamy ` ponieważ ` edytor, możesz wybrać dowolny edytor)

vim myscript.sh>

#!/bin/bash
# Ten skrypt drukuje plik techcodeview.com na terminalu
echo techcodeview.com

Nazwa wydruku

Nazwa wydruku

Sprawiamy, że nasz skrypt jest wykonywalny, używając `chmod +x`, a następnie wykonujemy go za pomocą `./myscipt.sh` i uzyskujemy żądane wyjście techcodeview.com.

4) Wyjaśnij cel polecenia echo w skryptach powłoki.

The polecenie echa służy do wyświetlania tekstu lub zmiennych na terminalu. Jest powszechnie używany do drukowania komunikatów, wartości zmiennych i generowania wyników programu.

434

polecenie echa

W tym przykładzie wykonaliśmy `echo` bezpośrednio na terminalu, ponieważ działa to tak samo w skrypcie powłoki.

5) Jak przypisać wartość do zmiennej w skrypcie powłoki?

Zmiennym przypisuje się wartości za pomocą operatora przypisania =.

Na przykład:

#!/bin/bash
# Przypisywanie wartości do zmiennej
imię = Jayesh
wiek=21
echo $imię $wiek

Wyjaśnienie:

  • Zmiennej nazwie przypisano wartość Jayesh.
  • Zmiennej wiek przypisano wartość 21.
  • echo służy do drukowania, a `$nazwa` `$wiek` służy do wywoływania wartości przechowywanej w zmiennych.

435

6) Napisz skrypt powłoki, który jako dane wejściowe pobiera nazwę użytkownika i wita go.

Utwórz skrypt o nazwie `example.sh`.

#!/bin/bash
# Zapytaj użytkownika o jego imię i nazwisko
echo Jak masz na imię?
przeczytaj imię
# Powitaj użytkownika
echo Witaj, $imie! Miło mi cię poznać.

Wyjaśnienie:

  • #!/bin/bash: To jest linia Shebang. Mówi systemowi, aby użył interpretera Bash do wykonania skryptu.
  • # Zapytaj użytkownika o jego imię i nazwisko: To jest komentarz. Zapewnia kontekst dotyczący nadchodzącego kodu. Komentarze są ignorowane przez tłumacza.
  • echo Jak się nazywasz?: Polecenie echo służy do wyświetlania tekstu w cudzysłowie na terminalu.
  • read name: Polecenie read czeka, aż użytkownik wprowadzi tekst i zapisuje go w nazwie zmiennej.
  • echo Witaj, $imię! Miło cię poznać.: Ta linia używa polecenia echo do wydrukowania wiadomości powitalnej zawierającej wartość zmiennej name, która została pobrana z danych wprowadzonych przez użytkownika.

436

7) Jak dodać komentarze do skryptu powłoki?

Komentarze w skryptach powłoki służą do zapewnienia wyjaśnień lub kontekstu kodu. Są one ignorowane przez tłumacza i są przeznaczone wyłącznie dla ludzi czytających scenariusz. Możesz dodawać komentarze, używając symbolu #.

#!/bin/bash
# To jest komentarz wyjaśniający cel skryptu
powtórz GFG

8) Utwórz skrypt powłoki, który sprawdza, czy w bieżącym katalogu istnieje plik.

Oto skrypt sprawdzający, czy w bieżącym katalogu istnieje plik o nazwie example.txt:

#!/bin/bash
plik=przykład.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
echo Plik istnieje: $plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=example.txt: Ta linia definiuje plik zmiennych i przypisuje mu wartość example.txt. Możesz zastąpić tę nazwę plikiem, który chcesz sprawdzić.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Warunek [ -e $plik ] sprawdza, czy plik określony przez wartość zmiennej pliku istnieje. Flaga -e służy do sprawdzania istnienia pliku.
  4. echo Plik istnieje: $plik: Jeśli warunek jest spełniony (tj. plik istnieje), w tej linii zostanie wyświetlony komunikat wskazujący, że plik istnieje, wraz z nazwą pliku.
  5. else: Jeśli warunek jest fałszywy (tzn. plik nie istnieje), skrypt wykonuje kod z gałęzi else.
  6. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że określony plik nie został znaleziony, wraz z jego nazwą.
  7. fi: Ta linia oznacza koniec instrukcji if.
Znalezienie pliku

Znalezienie pliku

9) Jaka jest różnica pomiędzy pojedynczymi cudzysłowami („) i podwójnymi cudzysłowami () w skryptach powłoki?

Pojedyncze cudzysłowy („) i podwójne cudzysłowy () służą do umieszczania ciągów znaków w skryptach powłoki, ale zachowują się inaczej:

  • Pojedyncze cudzysłowy: wszystko pomiędzy pojedynczymi cudzysłowami jest traktowane jako ciąg znaków. Nazwy zmiennych i większość znaków specjalnych nie są rozwijane.
  • Podwójne cudzysłowy: Zmienne i niektóre znaki specjalne w podwójnych cudzysłowach są rozwijane. Treść podlega podstawieniu zmiennych i podstawieniu poleceń.

#!/bin/bash

abcd=Witam
echo „$abcd” # Dane wyjściowe: $abcd
echo $abcd # Wynik: Witam

10) Jak można używać argumentów wiersza poleceń w skrypcie powłoki?

Argumenty wiersza poleceń to wartości dostarczane do skryptu podczas jego wykonywania. Dostęp do nich można uzyskać w skrypcie za pomocą specjalnych zmiennych, takich jak 1 $, 2 $ itd., gdzie 1 $ reprezentuje pierwszy argument, 2 $ reprezentuje drugi argument i tak dalej.

Na przykład: Jeśli nasza nazwa skryptu w `example.sh`

#!/bin/bash

echo Nazwa skryptu: $0
echo Pierwszy argument: $1
echo Drugi argument: 2 $

Jeśli uruchomimy skrypt z `.example.sh hello_1 hello_2`, wyświetli się:

argumenty cli

argumenty cli

11) Jak używać pętli for do iteracji po liście wartości?

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

owoce=(jabłko banan wiśnia data)
dla owoców w ${fruits[@]}; Do
echo Aktualny owoc: $owoc
zrobione

Wyjaśnienie:

Linia `fruits=` tworzy tablicę o nazwie owoce zawierającą cztery elementy: jabłko, banan, wiśnia i data.

  • dla owoców w ${fruits[@]}; do: Ta linia rozpoczyna pętlę for. Oto znaczenie każdej części:
  • dla owoców: deklaruje zmienną pętli zwaną owocami. W każdej iteracji pętli Fruit będzie przechowywać wartość bieżącego elementu z tablicy Fruits.
  • ${fruits[@]}: To jest rozwinięcie tablicy, które pobiera wszystkie elementy z tablicy Fruits. Składnia ${…} gwarantuje, że każdy element będzie traktowany jako oddzielny element.
  • do: To słowo kluczowe oznacza początek treści pętli.
  • echo Bieżący owoc: $owoc: Wewnątrz pętli w tej linii używane jest polecenie echo do wyświetlenia bieżącej wartości zmiennej owocowej pętli. Wypisuje komunikat w rodzaju Bieżący owoc: jabłko dla każdego owocu w tablicy.
  • gotowe: To słowo kluczowe oznacza koniec treści pętli. Informuje skrypt, że pętla została zakończona.
dla pętli

dla pętli

12) Napisz skrypt powłoki, który oblicza sumę liczb całkowitych od 1 do N za pomocą pętli.

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

echo Podaj liczbę (N):
przeczytaj N
suma=0
for (( i=1; i<=$N; i++ )); Do
suma=$((suma + i))
zrobione
echo Suma liczb całkowitych od 1 do $N to: $sum

Wyjaśnienie:
Skrypt rozpoczyna się od prośby o wprowadzenie liczby (N) za pomocą polecenia read. Ta liczba określi, ile razy pętla zostanie uruchomiona.

  1. Suma zmiennej jest inicjowana na 0. Ta zmienna będzie śledzić sumę liczb całkowitych.
  2. Pętla for zaczyna się od for (( i=1; i<=$N; i++ )). Ta struktura pętli służy do powtarzania zestawu działań określoną liczbę razy, w tym przypadku od 1 do wartości N.
  3. Wewnątrz pętli dzieją się następujące rzeczy:
    • i=1 ustawia zmienną pętli i na 1 na początku każdej iteracji.
    • Warunek pętli i<=$N sprawdza, czy i jest nadal mniejsze lub równe podanej liczbie N.
    • Jeżeli warunek jest spełniony, wykonywane jest ciało pętli.
    • sum=$((suma + i)) oblicza nową wartość sumy, dodając do niej bieżącą wartość i. Spowoduje to dodanie liczb całkowitych od 1 do bieżącej wartości i.
  4. Po każdej iteracji i++ zwiększa wartość i o 1.
  5. Pętla działa dopóki warunek i<=$N nie stanie się fałszywy (kiedy i stanie się większe niż N).
  6. Po zakończeniu pętli skrypt wyświetla sumę liczb całkowitych od 1 do wprowadzonej liczby N.

439

13) Utwórz skrypt, który wyszukuje określone słowo w pliku i zlicza jego wystąpienia.

Utwórz nazwę skryptu `word_count.sh`

#!/bin/bash

echo Wpisz szukane słowo:
przeczytaj słowo_celowe
echo Podaj nazwę pliku:
przeczytaj nazwę pliku
liczba=$(grep -o -w $słowo_docelowe $nazwa pliku | wc -l)
echo Słowo „$target_word” pojawia się $count razy w „$filename”.

Wyjaśnienie:

  • echo Wpisz słowo do wyszukania:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o wprowadzenie słowa, którego chce szukać w pliku.
  • read target_word: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie target_word.
  • echo Wpisz nazwę pliku:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o podanie nazwy pliku, który chce przeszukać.
  • read filename: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie filename.
  • count=$(grep -o -w $target_word $nazwa pliku | wc -l): Ta linia wykonuje główną pracę skryptu. Rozłóżmy to dalej:
    • grep -o -w $słowo_docelowe $nazwa pliku: Ta część polecenia wyszukuje wystąpienia słowa_docelowego w określonej nazwie pliku. Opcje -o i -w zapewniają, że zliczane będą tylko dopasowania całych słów.
    • |: To jest potok, który pobiera dane wyjściowe poprzedniego polecenia i wysyła je jako dane wejściowe do następnego polecenia.
    • wc -l: Ta część polecenia wykorzystuje polecenie wc do zliczenia liczby wierszy na wejściu. Opcja -l specjalnie zlicza linie.
    • Całe polecenie oblicza liczbę wystąpień słowa_docelowego w pliku i przypisuje tę liczbę do zmiennej coun

441

14) Wyjaśnij różnice pomiędzy standardowym wyjściem (stdout) i standardowym wyjściem błędów (stderr).

Główna różnica między standardowym wyjściem (stdout) a standardowym błędem (stderr) jest następująca:

  • Standardowe wyjście (stdout): Jest to domyślny strumień wyjściowy, do którego trafiają zwykłe dane wyjściowe polecenia. Domyślnie jest wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą>.
  • Błąd standardowy (stderr): Jest to strumień wyjściowy komunikatów o błędach i ostrzeżeń. Domyślnie jest również wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą 2>.

15) Wyjaśnij koncepcję instrukcji warunkowych w skryptach powłoki.

Instrukcje warunkowe w skryptach powłoki pozwalają nam podejmować decyzje i kontrolować przebieg naszego scenariusza w oparciu o określone warunki. Umożliwiają one naszemu skryptowi wykonywanie różnych zestawów poleceń w zależności od tego, czy dany warunek jest prawdziwy, czy fałszywy. Podstawowymi instrukcjami warunkowymi w skryptach powłoki są instrukcja if, instrukcja elif (opcjonalna) i instrukcja else (opcjonalna).

Oto podstawowa struktura instrukcji warunkowej w skrypcie powłoki:

jeśli [warunek]; Następnie
# Polecenia do wykonania, jeśli warunek jest prawdziwy
elif [inny_warunek]; Następnie
# Polecenia do wykonania, jeśli inny_warunek jest prawdziwy (opcjonalnie)
w przeciwnym razie
# Polecenia do wykonania, jeśli żaden z warunków nie jest spełniony (opcjonalnie)
Być

Wyjaśnienie:

  • [warunek] = Polecenie, które ocenia warunek i zwraca prawdziwy (0) lub fałszywy (niezerowy) status wyjścia.
  • then = Jest to słowo kluczowe wskazujące, że następujące po nim polecenia zostaną wykonane, jeśli warunek ma wartość true.
  • elif = (skrót od else if) Jest to sekcja, która pozwala nam określić dodatkowe warunki do sprawdzenia.
  • else = jest to sekcja zawierająca polecenia, które zostaną wykonane, jeśli żaden z warunków nie zostanie spełniony.
  • fi = Jest to słowo kluczowe oznaczające koniec bloku warunkowego.

16) Jak odczytać linie z pliku w skrypcie powłoki?

Do czytaj linie z pliku w skrypcie powłoki, możemy użyć różnych metod, ale jednym z powszechnych podejść jest użycie pętli while w połączeniu z poleceniem read. Oto jak możemy to zrobić:

#!/bin/bash
plik=/home/jayeshkumar/jayesh.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
podczas gdy IFS= czytaj -r linia; Do
echo Odczytana linia: $line
# Dodaj tutaj logikę przetwarzania
gotowe <$plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=/home/jayeshkumar/jayesh.txt: Ta linia definiuje plik zmiennych i przypisuje pełną ścieżkę do pliku jayesh.txt w katalogu /home/jayeshkumar. Zmień tę ścieżkę, aby odpowiadała rzeczywistej ścieżce pliku, który chcesz przeczytać.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Sprawdza, czy plik określony przez zmienną $file istnieje. Flaga -e sprawdza istnienie pliku.
  4. podczas gdy IFS= czytaj -r linia; do: Ta linia inicjuje pętlę while, która odczytuje linie z pliku.
    • IFS=: IFS (wewnętrzny separator pól) jest ustawiony na pustą wartość, aby zachować spacje początkowe i końcowe.
    • read -r line: odczytuje bieżącą linię z pliku i zapisuje ją w linii zmiennej.
  5. echo Odczyt linii: $line: Ta linia drukuje zawartość linii, która została odczytana z pliku. Zmienna $line zawiera zawartość bieżącej linii.
  6. # Dodaj tutaj logikę przetwarzania: To jest komentarz zastępczy, w którym możesz dodać własną logikę przetwarzania każdej linii. Na przykład możesz przeanalizować wiersz, wyodrębnić informacje lub wykonać określone działania w oparciu o treść.
  7. gotowe <$plik: Oznacza to koniec pętli while. Plik < $przekierowuje zawartość pliku do odczytu przez pętlę.
  8. else: Jeśli plik nie istnieje (warunek w instrukcji if jest fałszywy), skrypt wykonuje kod z gałęzi else.
  9. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że nie znaleziono określonego pliku.
  10. fi: Ta linia oznacza koniec instrukcji if.
odczytanie pliku

odczytanie pliku

Tutaj użyliśmy ` pw ` polecenie, aby uzyskać ścieżkę bieżącego katalogu.

17) Napisz w skrypcie powłoki funkcję obliczającą silnię podanej liczby.

Oto skryptobliczyć silniędanego numeru.

#!/bin/bash
# Zdefiniuj funkcję do obliczenia silni
oblicz_czynnik() {
liczba = 1 USD
fakt=1
for ((i=1; i<=num; i++)); Do
fakt=$((fakt * i))
zrobione
powtórz fakt
}
# Poproś użytkownika o wprowadzenie numeru
echo Wpisz liczbę:
przeczytaj numer_wejściowy
# Wywołaj funkcjękalkuluj_czynnikową z numerem wejściowym
Factorial_result=$(oblicz_czynnik $input_num)
# Wyświetl wynik silni
echo Silnia wartości $input_num to: $factorial_result

Wyjaśnienie:

  1. Skrypt zaczyna się od linii #!/bin/bash określającej interpreter.
  2. call_factorial() jest zdefiniowana jako funkcja. Przyjmuje jeden argument, num, który jest liczbą, dla której należy obliczyć silnię.
  3. Wewnątrz funkcji fakt jest inicjowany na 1. Ta zmienna będzie przechowywać wynik silni.
  4. Pętla for iteruje od 1 do podanej liczby (num). W każdej iteracji mnoży bieżącą wartość faktu przez indeks pętli i.
  5. Po zakończeniu pętli zmienna faktu zawiera obliczoną silnię.
  6. Skrypt monituje użytkownika o wprowadzenie liczby za pomocą funkcji read.
  7. Funkcjakalkuluj_czynnik jest wywoływana z liczbą podaną przez użytkownika, a wynik jest zapisywany w zmiennejfactorial_result.
  8. Na koniec skrypt wyświetla obliczony wynik silni.
Silnia

Silnia

18) Jak radzisz sobie z sygnałami takimi jak Ctrl+C w skrypcie powłoki?

W skrypcie powłoki możesz obsługiwać sygnały takie jak Ctrl+C (znane również jako SIGINT) za pomocą polecenia trap. Ctrl+C generuje sygnał SIGINT, gdy użytkownik go naciśnie, aby przerwać działający skrypt lub program. Używając polecenia trap, możesz określić działania, które mają zostać podjęte po odebraniu określonego sygnału. Oto jak obsługujesz sygnały takie jak Ctrl+C w skrypcie powłoki:

#!/bin/bash
posprzątać() {
echo Skrypt przerwany. Wykonywanie czyszczenia…
# Dodaj tutaj swoje działania czyszczące
wyjście 1
}
# Ustaw pułapkę, aby wywołać funkcję czyszczenia po odebraniu Ctrl+C (SIGINT).
czyszczenie pułapek SIGINT
# Reszta skryptu
echo Bieganie…
spać 10
echo Zakończono.

Obsługa sygnałów jest ważna, aby skrypty były niezawodne i sprawnie obsługiwały nieoczekiwane zakłócenia. Możesz dostosować funkcję czyszczenia do swoich konkretnych potrzeb, takich jak zamykanie plików, zatrzymywanie procesów lub rejestrowanie informacji przed zakończeniem skryptu.

Wyjaśnienie:

  1. #!/bin/bash: Ta linia określa interpreter, który będzie używany do uruchamiania skryptu.
  2. cleanup() { … }: Definiuje funkcję o nazwie sprzątanie. Wewnątrz tej funkcji możesz uwzględnić wszelkie akcje, które należy wykonać w przypadku przerwania skryptu, takie jak zamknięcie plików, zwolnienie zasobów lub wykonanie innych zadań czyszczących.
  3. czyszczenie pułapek SIGINT: Polecenie pułapki służy do skonfigurowania procedury obsługi sygnału. W tym przypadku określa, że ​​po odebraniu sygnału SIGINT (Ctrl+C) powinna zostać wykonana funkcja czyszcząca.
  4. echo Działa…, śpi 10, echo Zakończono.: To tylko przykładowe polecenia symulujące wykonanie skryptu.

446

19) Utwórz skrypt, który sprawdza i usuwa zduplikowane linie w pliku tekstowym.

Oto nasz skrypt linuksowy, w którym usuniemy zduplikowane linie z pliku tekstowego.

#!/bin/bash
plik_wejściowy=plik wejściowy.txt
plik_wyjściowy=plik wyjściowy.txt
sortuj $plik_wejściowy | uniq> $plik_wyjściowy
echo Pomyślnie usunięto zduplikowane linie.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), który wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. Zmienna input_file jest ustawiona na nazwę pliku wejściowego zawierającego zduplikowane linie (zmień tę nazwę na rzeczywistą nazwę pliku wejściowego).
  3. Zmienna plik_wyjściowy jest ustawiona na nazwę pliku wyjściowego, z którego zostaną usunięte duplikaty (zmień tę nazwę na żądaną nazwę pliku wyjściowego).
  4. Skrypt używa polecenia sort do sortowania wierszy w pliku wejściowym. Sortowanie linii zapewnia zgrupowanie zduplikowanych linii.
  5. Posortowane linie są następnie przepuszczane przez polecenie uniq, które usuwa kolejne zduplikowane linie. Dane wyjściowe tego procesu są przekierowywane do pliku wyjściowego.
  6. Po usunięciu duplikatów skrypt wyświetla komunikat o powodzeniu.
usuwanie zduplikowanych linii

usuwanie zduplikowanych linii

Tutaj używamy ` kot `, aby wyświetlić tekst znajdujący się w pliku tekstowym.

20) Napisz skrypt generujący bezpieczne losowe hasło.

Oto nasz skrypt generujący bezpieczne losowe hasło.

#!/bin/bash
# Funkcja generowania losowego hasła
wygeneruj_hasło() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Wywołaj funkcję i zapisz wygenerowane hasło
hasło=$(wygeneruj_hasło)
echo Wygenerowane hasło: $password

Uwaga: Użytkownik może odpowiednio zmienić długość hasła, zastępując cyfrę `12`.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Funkcja generate_password służy do generowania losowego hasła. Oto jak to działa:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 dzieli przefiltrowane losowe dane na linie o szerokości 12 znaków każda.
    • head -n 1 wybiera pierwszą linię, skutecznie dając nam losową sekwencję znaków o długości 12.
  3. Do zmiennej hasła przypisywany jest wynik wywołania funkcji generate_password.
  4. Na koniec wygenerowane hasło jest wyświetlane za pomocą echa.

448

21) Napisz skrypt powłoki, który obliczy całkowity rozmiar wszystkich plików w katalogu.

Oto skrypt powłoki obliczający całkowity rozmiar wszystkich plików w katalogu.

#!/bin/bash
katalog=/ścieżka/do/twojego/katalogu
total_size=$(du -csh $katalog | grep total | awk „{print $1}”)
echo Całkowity rozmiar plików w katalogu $: $total_size

Wyjaśnienie:

  1. Skrypt zaczyna się od znaku #!/bin/bash shebang, wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Zmienna katalogu jest ustawiona na ścieżkę katalogu, dla którego chcesz obliczyć całkowity rozmiar pliku. Zastąp /path/to/your/directory rzeczywistą ścieżką.
  3. Polecenie du służy do szacowania wykorzystania przestrzeni plików. Stosowane opcje to:
    • -c: Wygeneruj sumę całkowitą.
    • -s: Wyświetla tylko całkowity rozmiar określonego katalogu.
    • -h: Rozmiar wydruku w formacie czytelnym dla człowieka (np. KB, MB, GB).
  4. Dane wyjściowe du są przesyłane do grep total w celu odfiltrowania linii zawierającej całkowity rozmiar.
  5. awk „{print $1}” służy do wyodrębnienia pierwszego pola (całkowitego rozmiaru) z linii.
  6. Obliczony całkowity rozmiar jest przechowywany w zmiennej total_size.
  7. Na koniec skrypt wyświetla całkowity rozmiar za pomocą echo.
Całkowity rozmiar plików

Całkowity rozmiar plików

Tutaj użyliśmy ` pw ` polecenie, aby zobaczyć bieżącą ścieżkę katalogu.

22) Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki.

Funkcja `jeśli`Staiment Oświadczenie „elif”.
Zamiar Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki. Zapewnia alternatywne warunki umożliwiające sprawdzenie, czy początkowy warunek if jest fałszywy.
stosowanie Używany do warunku początkowego. Używane po początkowym warunku if w celu sprawdzenia dodatkowych warunków.
liczba bloków Może mieć tylko jeden, jeśli jest blokowany. Może mieć wiele bloków elif, ale tylko jeden blok else (opcjonalnie).
Wykonanie Wykonuje blok kodu powiązany z instrukcją if, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, wykonywany jest blok else (jeśli występuje) (opcjonalnie). Sprawdza każdy warunek elif w kolejności. Jeśli jeden warunek elif jest prawdziwy, wykonywany jest odpowiedni blok kodu, a skrypt kończy cały blok warunkowy. Jeśli żaden z warunków elif nie jest spełniony, wykonywany jest blok else (jeśli występuje).
Struktury zagnieżdżone Można je zagnieżdżać w innych blokach if, elif lub else. Nie można go zagnieżdżać w innym bloku elif, ale można go użyć w bloku if lub else.

Rozumiemy to na przykładzie.

#!/bin/bash
liczba=5
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
w przeciwnym razie
echo $liczba nie jest większa niż 10
Być
Echo ---
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
elif [$liczba -równ. 10]; Następnie
echo $liczba jest równa 10
w przeciwnym razie
echo $liczba jest mniejsza niż 10
Być

Wyjaśnienie:

W tym przykładzie pierwszy blok if sprawdza, czy liczba jest większa niż 10. Jeśli nie, wypisuje komunikat wskazujący, że liczba nie jest większa niż 10. Drugi blok z instrukcjami elif sprawdza po kolei wiele warunków, aż jeden z nich będzie prawdziwy. W tym przypadku, ponieważ wartość liczby wynosi 5, wynikiem będzie:

różnica if_elif

różnica if_elif

23) Jak używać pętli while do wielokrotnego wykonywania poleceń?

Pętla while jest używana w skryptach powłoki do wielokrotnego wykonywania zestawu poleceń, o ile określony warunek jest spełniony. Pętla kontynuuje wykonywanie poleceń, aż warunek stanie się fałszywy.

Oto podstawowa składnia pętli while:

podczas gdy [warunek]; Do
# Polecenia do wykonania
zrobione

Wyjaśnienie:

  1. Pętla „while” zaczyna się od słowa kluczowego „while”, po którym następuje warunek ujęty w nawiasy kwadratowe „[ ]”.
  2. Ciało pętli zawierające polecenia do wykonania jest ujęte w słowa kluczowe „do” i „done”.
  3. Pętla najpierw sprawdza warunek. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w treści pętli. Po wykonaniu treści pętli warunek jest ponownie sprawdzany i proces jest powtarzany, aż warunek stanie się fałszywy.

Przykład: Jeśli chcemy wydrukować liczby od 1 do 5

#!/bin/bash
licznik=1
podczas gdy [ $licznik -le 5 ]; Do
echo Numer: $licznik
licznik=$((licznik + 1))
zrobione

Wyjaśnienie:

  • Zmienna licznika jest ustawiona na 1.
  • Pętla while sprawdza, czy wartość licznika jest mniejsza lub równa 5. Dopóki ten warunek jest spełniony, pętla kontynuuje wykonywanie.
  • Wewnątrz pętli bieżąca wartość licznika jest drukowana za pomocą echo.
  • Licznik jest zwiększany o 1 za pomocą wyrażenia $((licznik + 1)).
pętla while

pętla while

24) Utwórz skrypt powłoki, który znajdzie i wyświetli listę wszystkich pustych plików w katalogu.

Skrypt powłoki, którego możesz użyć do znalezienia i wyświetlenia wszystkich pustych plików w katalogu za pomocą poleceń `find` i `stat`:

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie: $0
wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie
echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być
echo Puste pliki w katalogu $:
znajdź katalog $ -typ f -pusty

Wyjaśnienie:

  1. ` #!/bin/bash `: Nazywa się to shebang i mówi systemowi operacyjnemu, aby użył powłoki Bash do interpretacji i wykonania skryptu.
  2. ` katalog = 1 $ ″ `: Ta linia przypisuje pierwszy argument wiersza poleceń (oznaczony jako $1) do zmiennej ` informator `.
  3. ` if [ -z $katalog ]; Następnie `: Ta linia rozpoczyna instrukcję if, która sprawdza, czy ` informator ` zmienna jest pusta (-z sprawdza pusty ciąg znaków).
  4. ` echo Użycie: $0 `: Jeśli katalog jest pusty, ta linia wyświetla komunikat o użyciu, gdzie ` 0 dolarów ` oznacza nazwę skryptu.
  5. ` wyjście 1 `: Ta linia kończy skrypt z kodem zakończenia ` 1 `, wskazując błąd.
  6. ` Być `: Ta linia oznacza koniec ` Jeśli ` oświadczenie.
  7. ` Jeśli [ ! -d $katalog]; Następnie `: Spowoduje to uruchomienie kolejnej instrukcji if w celu sprawdzenia, czy podany katalog istnieje (` -D ` testuje katalog).
  8. ` echo Błąd: „katalog $” nie jest prawidłowym katalogiem. `: Jeśli podany katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. ` wyjście 1 `: Kończy skrypt z kodem zakończenia ` 1 `.
  10. ` Być `: Oznacza koniec drugiego ` jeśli` oświadczenie.
  11. ` echo Puste pliki w katalogu $: `: Jeśli do tej pory wszystko było w porządku, w tej linii zostanie wyświetlony komunikat wskazujący, że skrypt wyświetli listę pustych plików w określonym katalogu.
  12. ` znajdź katalog $ -typ f -pusty `: Ta linia używa ` znajdować ` polecenie wyszukiwania pustych plików (` -pusty `) typu zwykłe pliki (` -wpisz f `) w określonym katalogu. Następnie wyświetla listę tych pustych plików.
Znajdowanie pustych plików

Znajdowanie pustych plików

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/

25) Jaki jest cel polecenia read w skryptach powłoki?

Polecenie read w skryptach powłoki pozwala skryptowi poprosić Cię o informacje. To tak, jakby komputer zadał Ci pytanie i czekał na Twoją odpowiedź. Jest to przydatne w przypadku skryptów, które wymagają wpisania czegoś lub gdy skrypt musi pracować z informacjami z plików. Polecenie read pomaga skryptowi zatrzymać się i poczekać na to, co wpiszesz, a następnie może wykorzystać te informacje do wykonania dalszych czynności w skrypcie.

Składnia polecenia odczytu:

read variable_name>

Przykład : Jeśli chcemy przyjąć nazwę jako dane wejściowe od użytkownika, aby ją wydrukować.

#!/bin/bash
echo Proszę podać swoje imię:
przeczytaj imię
echo Witaj, $imie!

453

czytaj imię

Podsumowując, polecenie read służy do przechwytywania danych wprowadzanych przez użytkownika lub danych z plików w skryptach powłoki, dzięki czemu skrypty są bardziej interaktywne i wszechstronne.

26) Napisz skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

Oto skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie: $0
wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie

echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być

katalog $ CD || wyjście 1

dla pliku w *; Do
jeśli [ -f $plik ]; Następnie
nowa nazwa=$(echo $plik | tr „A-Z” „a-z”)
[ $plik != $nowa nazwa ] && mv $plik $nowa nazwa
Być
zrobione

Wyjaśnienie:

  1. #!/bin/bash : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. katalog = 1 $ ″ : Ta linia przypisuje pierwszy argument wiersza poleceń do katalogu zmiennych.
  3. if [ -z $katalog ]; Następnie : Ta linia sprawdza, czy zmienna katalogu jest pusta (podczas uruchamiania skryptu nie podano żadnego argumentu).
  4. echo Użycie: $0 : Jeśli katalog jest pusty, w tej linii zostanie wydrukowana informacja o użyciu zawierająca nazwę skryptu ($0).
  5. wyjście 1 : Ta linia kończy skrypt z kodem zakończenia 1, wskazującym, że wystąpił błąd.
  6. F i: Oznacza to koniec pierwszej instrukcji if.
  7. Jeśli [ ! -d $katalog]; Następnie : Ta linia sprawdza, czy podany katalog nie istnieje (-d sprawdza katalog).
  8. echo Błąd: „katalog $” nie jest prawidłowym katalogiem. : Jeśli określony katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. wyjście 1 : Opuszcza skrypt z kodem wyjścia 1.
  10. Być : Oznacza koniec drugiej instrukcji if.
  11. katalog $ CD || wyjście 1 : Zmienia bieżący katalog roboczy na określony katalog. Jeśli zmiana katalogu nie powiedzie się (np. katalog nieistniejący), skrypt zakończy działanie z kodem błędu.
  12. dla pliku w *; Do: I dla pliku w *; Do: inicjuje pętlę, która iteruje po wszystkich elementach w bieżącym katalogu (* pasuje do wszystkich nazw plików).
  13. jeśli [ -f $plik ]; Następnie : Sprawdza, czy bieżący element iteracji pętli jest zwykłym plikiem (-f sprawdza zwykły plik).
  14. nowa nazwa=$(echo $plik | tr „A-Z” „a-z”) : Konwertuje bieżącą nazwę pliku ($file) na małe litery za pomocą polecenia tr i zapisuje wynik w zmiennej newname.
  15. [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa : porównuje oryginalną nazwę pliku z nową nazwą pliku zawierającą małe litery. Jeśli są różne, zmienia nazwę pliku za pomocą polecenia mv.
  16. Być : Oznacza koniec wewnętrznej instrukcji if.
  17. zrobione : Oznacza koniec pętli.

454

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/test

27) Jak można używać operacji arytmetycznych w skrypcie powłoki?

Operacje arytmetyczne można wykonywać w skrypcie powłoki przy użyciu różnych wbudowanych metod. Powłoka zapewnia mechanizmy prostych obliczeń arytmetycznych przy użyciu rozwinięcia arytmetycznego, takie jak:

  1. Rozszerzenie arytmetyczne ($((…)))
  2. Używanie polecenia wyraż
  3. Używanie polecenia let

Oto nasz skrypt powłoki wyjaśniający wszystkie trzy metody operacji arytmetycznych.

#!/bin/bash
liczba1=10
liczba2=5

#Rozwinięcie arytmetyczne ($((…)))

wynik=$((liczba1 + liczba2))
echo Suma: $wynik

#Używanie polecenia wyraż

suma=$(wyrażenie $num1 + $num2)
echo Suma: $suma

#Używanie polecenia let

niech suma = liczba1 + liczba2
echo Suma: $suma

Wyjaśnienie:

  1. `#!/bin/bash` : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. `liczba1=10` i ` liczba2=5` : Linie te przypisują wartości 10 i 5 zmiennym ` numer1 ` i ` liczba2 `, odpowiednio.
  3. `#Rozwinięcie arytmetyczne ($((…)))` : To jest komentarz wskazujący początek sekcji demonstrującej rozwinięcie arytmetyczne.
  4. `wynik=$((liczba1 + liczba2))` : W tej linii zastosowano rozwinięcie arytmetyczne do obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` wynik ` zmienna.
  5. `echo Suma: $wynik` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` wynik ` zmienna.
  6. `#Używanie polecenia wyrażenia` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` wyr ` polecenie wykonywania operacji arytmetycznych.
  7. `suma=$(wyrażenie $num1 + $num2)` : Ta linia używa ` wyr ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` suma ` zmienna. Należy pamiętać, że ` wyr Polecenie ` wymaga spacji wokół operatorów.
  8. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
  9. `#Używanie polecenia let` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` pozwalać ` polecenie wykonywania operacji arytmetycznych.
  10. `niech suma = liczba1 + liczba2″` : Ta linia używa ` pozwalać ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przypisuje wynik do ` suma ` zmienna. ` pozwalać Polecenie ` nie wymaga spacji wokół operatorów.
  11. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
arytmetyka

arytmetyka

28) Utwórz skrypt sprawdzający, czy host sieciowy jest osiągalny.

Oto prosty skrypt powłoki, który używa polecenia ping do sprawdzenia, czy host sieciowy jest osiągalny:

#!/bin/bash
gospodarz = 1 $ ″
jeśli [ -z $host ]; Następnie
echo Użycie: $0
wyjście 1
Być
ping -c 4 $host

jeśli [$? -równ. 0]; Następnie
echo $host jest osiągalny.
w przeciwnym razie
echo $host jest nieosiągalny.
Być

Wyjaśnienie:

  1. Jako argument przyjmuje nazwę hosta lub adres IP i sprawdza, czy argument został podany.
  2. Jeśli nie podano żadnego argumentu, wyświetla komunikat o użyciu i kończy działanie.
  3. Używa polecenia ping z opcją -c 4 do wysyłania czterech żądań echa ICMP do określonego hosta.
  4. Po uruchomieniu polecenia ping sprawdza status wyjścia ($?). Jeśli status wyjścia wynosi 0, oznacza to, że host jest osiągalny i skrypt wyświetla komunikat o powodzeniu. W przeciwnym razie drukuje komunikat o błędzie.

456

Notatka : Musimy podać nazwę hosta jako argument podczas uruchamiania skryptu. Tutaj użyliśmy google.com

29) Napisz skrypt powłoki, aby znaleźć największy element w tablicy:

Oto skrypt powłoki umożliwiający znalezienie największego elementu w tablicy.

#!/bin/bash
# Zadeklaruj tablicę
tablica=(3 56 24 89 67)

# Zainicjuj zmienną, aby przechowywać maksymalną wartość, zaczynając od pierwszego elementu

max=${tablica[0]}

# Iteruj po tablicy

dla liczby w ${tablica[@]}; Do

# Porównaj każdy element z bieżącym maksimum

jeśli ((liczba> maks.)); Następnie
maks.=$liczba
Być
zrobione

# Wydrukuj wartość maksymalną

echo Maksymalny element tablicy to: $max

Wyjaśnienie:

  1. ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. ` tablica=(3 56 24 89 67) `: Tablica jest zadeklarowana i zainicjowana wartościami.
  3. ` max=${tablica[0]} `: `max` jest inicjalizowane pierwszym elementem tablicy.
  4. ` dla liczby w ${tablica[@]}; Do `: Pętla „for” służy do iteracji po elementach tablicy.
  5. ` jeśli ((liczba> maks.)); Następnie `: Instrukcja `if` sprawdza, czy bieżący element `num` jest większy od bieżącego maksimum `max`.
  6. ` max=$num`: Jeśli`num ` jest większe niż `max`, `max` jest aktualizowane o wartość num.
  7. ` zrobione `: Pętla „for” jest zamknięta.
  8. ` echo Maksymalny element tablicy to: $max `: Na koniec skrypt wypisuje maksymalną wartość znalezioną w tablicy.
461

największa liczba

30) Napisz skrypt obliczający sumę elementów w tablicy.

#!/bin/bash

# Zadeklaruj tablicę

tablica=(1 65 22 19 94)

# Zainicjuj zmienną, aby zapisać sumę

suma=0

# Iteruj po tablicy i dodaj każdy element do sumy

dla liczby w ${tablica[@]}; Do
rano=$((rano + rano))
zrobione

# Wydrukuj sumę

echo Suma elementów tablicy wynosi: $sum

Wyjaśnienie:

` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.

` tablica=(1 65 22 19 94) `: Tablica jest zadeklarowana i zainicjowana wartościami.

` suma=0 `:` suma ` jest inicjalizowane na zero, aby przechowywać sumę elementów.

` dla liczby w ${tablica[@]}; Do `: A` Do Pętla ` służy do iteracji po elementach tablicy.

` rano=$((rano + rano)) `: Wewnątrz pętli każdy element ` na jednego ` dodaje się do ` suma ` zmienna.

` zrobione `: ` Do ` pętla jest zamknięta.

`echo Suma elementów tablicy wynosi: $sum`: Na koniec skrypt wypisuje sumę wszystkich elementów tablicy.

462

Suma elementów

Dowiedz się więcej o skryptach powłoki

Wniosek

Wszyscy maniacy wiemy, że skrypt powłoki jest bardzo przydatny w zwiększaniu produktywności pracy, a także oszczędzaniu czasu. Tak więc w tym artykule omówiliśmy 30 bardzo przydatnych i najbardziej oszukańczych przykładów skryptów powłoki . Mamy nadzieję, że ten kompletny przewodnik na temat przykładowych skryptów powłoki pomoże Ci zrozumieć wszystko na temat skryptów powłoki.




wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie
echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być
echo Puste pliki w katalogu $:
znajdź katalog $ -typ f -pusty

Wyjaśnienie:

  1. ` #!/bin/bash `: Nazywa się to shebang i mówi systemowi operacyjnemu, aby użył powłoki Bash do interpretacji i wykonania skryptu.
  2. ` katalog = 1 $ ″ `: Ta linia przypisuje pierwszy argument wiersza poleceń (oznaczony jako ) do zmiennej ` informator `.
  3. ` if [ -z $katalog ]; Następnie `: Ta linia rozpoczyna instrukcję if, która sprawdza, czy ` informator ` zmienna jest pusta (-z sprawdza pusty ciąg znaków).
  4. ` echo Użycie:

    W przypadku wszystkich dystrybucji Linuksa skrypt powłoki jest jak magiczna różdżka, która automatyzuje proces, oszczędza czas użytkowników i zwiększa produktywność. Ten samouczek dotyczący skryptowania wprowadzi Cię w ponad 25 przykładów tworzenia skryptów.

    Zanim jednak przejdziemy do tematu skrypty powłoki przykłady, przyjrzyjmy się skryptowi powłoki i rzeczywistym przypadkom użycia skryptów powłoki.

    Co to jest skrypt powłoki?

    Cóż, skorupa jest interfejs wiersza polecenia ( interpreter wiersza poleceń ), który działa w oknie tekstowym, w którym użytkownicy mogą zarządzać poleceniami powłoki i je wykonywać. Z drugiej strony proces pisania zestawu poleceń do wykonania w systemie Linux. Plik zawierający takie instrukcje nazywany jest skryptem bash.

    Zastosowania skryptów powłoki

    Poniżej znajduje się kilka typowych zastosowań skryptu powłoki:

    • Automatyzacja zadań – Można go używać do automatyzacji powtarzalnych zadań, takich jak regularne tworzenie kopii zapasowych i zadania instalacji oprogramowania.
    • Dostosowywanie - Można używać skryptów powłoki do projektowania środowiska wiersza poleceń i łatwego wykonywania zadań zgodnie z potrzebami.
    • Zarządzanie plikami - Skryptów powłoki można również używać do zarządzania plikami i katalogami oraz manipulowania nimi, na przykład przenoszenia, kopiowania, zmiany nazwy lub usuwania plików.

    Przykłady skryptów powłoki w systemie Linux

    1) Co oznacza shebang (#!) na początku skryptu powłoki?

    The shebang (#!) na początku skryptu wskazuje interpreter, który powinien zostać użyty do wykonania skryptu. Mówi systemowi, która powłoka lub interpreter powinien interpretować polecenia skryptu.

    Na przykład: Załóżmy, że mamy skrypt o nazwie mójscript.sh napisane w powłoce Bash:

    szulernia

    szulernia

    W tym przykładzie:

    • Znak #!/bin/bash na początku skryptu wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    • Polecenia echo służą do drukowania komunikatów na terminalu.

    2) Jak uruchomić skrypt powłoki z wiersza poleceń?

    Aby uruchomić skrypt powłoki z wiersza poleceń, musimy wykonać następujące kroki:

    • Upewnij się, że plik skryptu ma uprawnienia do wykonywania, używając polecenie chmod :
    chmod +x myscript.sh>
    • Wykonaj skrypt, używając jego nazwy pliku:
    ./myscript.sh>

    Tutaj musisz wymienić myscript.sh z twoją nazwą skryptu.

    3) Napisz skrypt powłoki, który wypisuje plik techcodeview.com na terminalu.

    Utwórz nazwę skryptu `myscript.sh` (używamy ` ponieważ ` edytor, możesz wybrać dowolny edytor)

    vim myscript.sh>

    #!/bin/bash
    # Ten skrypt drukuje plik techcodeview.com na terminalu
    echo techcodeview.com

    Nazwa wydruku

    Nazwa wydruku

    Sprawiamy, że nasz skrypt jest wykonywalny, używając `chmod +x`, a następnie wykonujemy go za pomocą `./myscipt.sh` i uzyskujemy żądane wyjście techcodeview.com.

    4) Wyjaśnij cel polecenia echo w skryptach powłoki.

    The polecenie echa służy do wyświetlania tekstu lub zmiennych na terminalu. Jest powszechnie używany do drukowania komunikatów, wartości zmiennych i generowania wyników programu.

    434

    polecenie echa

    W tym przykładzie wykonaliśmy `echo` bezpośrednio na terminalu, ponieważ działa to tak samo w skrypcie powłoki.

    5) Jak przypisać wartość do zmiennej w skrypcie powłoki?

    Zmiennym przypisuje się wartości za pomocą operatora przypisania =.

    Na przykład:

    #!/bin/bash
    # Przypisywanie wartości do zmiennej
    imię = Jayesh
    wiek=21
    echo $imię $wiek

    Wyjaśnienie:

    • Zmiennej nazwie przypisano wartość Jayesh.
    • Zmiennej wiek przypisano wartość 21.
    • echo służy do drukowania, a `$nazwa` `$wiek` służy do wywoływania wartości przechowywanej w zmiennych.

    435

    6) Napisz skrypt powłoki, który jako dane wejściowe pobiera nazwę użytkownika i wita go.

    Utwórz skrypt o nazwie `example.sh`.

    #!/bin/bash
    # Zapytaj użytkownika o jego imię i nazwisko
    echo Jak masz na imię?
    przeczytaj imię
    # Powitaj użytkownika
    echo Witaj, $imie! Miło mi cię poznać.

    Wyjaśnienie:

    • #!/bin/bash: To jest linia Shebang. Mówi systemowi, aby użył interpretera Bash do wykonania skryptu.
    • # Zapytaj użytkownika o jego imię i nazwisko: To jest komentarz. Zapewnia kontekst dotyczący nadchodzącego kodu. Komentarze są ignorowane przez tłumacza.
    • echo Jak się nazywasz?: Polecenie echo służy do wyświetlania tekstu w cudzysłowie na terminalu.
    • read name: Polecenie read czeka, aż użytkownik wprowadzi tekst i zapisuje go w nazwie zmiennej.
    • echo Witaj, $imię! Miło cię poznać.: Ta linia używa polecenia echo do wydrukowania wiadomości powitalnej zawierającej wartość zmiennej name, która została pobrana z danych wprowadzonych przez użytkownika.

    436

    7) Jak dodać komentarze do skryptu powłoki?

    Komentarze w skryptach powłoki służą do zapewnienia wyjaśnień lub kontekstu kodu. Są one ignorowane przez tłumacza i są przeznaczone wyłącznie dla ludzi czytających scenariusz. Możesz dodawać komentarze, używając symbolu #.

    #!/bin/bash
    # To jest komentarz wyjaśniający cel skryptu
    powtórz GFG

    8) Utwórz skrypt powłoki, który sprawdza, czy w bieżącym katalogu istnieje plik.

    Oto skrypt sprawdzający, czy w bieżącym katalogu istnieje plik o nazwie example.txt:

    #!/bin/bash
    plik=przykład.txt
    # Sprawdź, czy plik istnieje
    if [ -e $plik ]; Następnie
    echo Plik istnieje: $plik
    w przeciwnym razie
    echo Nie znaleziono pliku: $file
    Być

    Wyjaśnienie:

    1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
    2. file=example.txt: Ta linia definiuje plik zmiennych i przypisuje mu wartość example.txt. Możesz zastąpić tę nazwę plikiem, który chcesz sprawdzić.
    3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Warunek [ -e $plik ] sprawdza, czy plik określony przez wartość zmiennej pliku istnieje. Flaga -e służy do sprawdzania istnienia pliku.
    4. echo Plik istnieje: $plik: Jeśli warunek jest spełniony (tj. plik istnieje), w tej linii zostanie wyświetlony komunikat wskazujący, że plik istnieje, wraz z nazwą pliku.
    5. else: Jeśli warunek jest fałszywy (tzn. plik nie istnieje), skrypt wykonuje kod z gałęzi else.
    6. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że określony plik nie został znaleziony, wraz z jego nazwą.
    7. fi: Ta linia oznacza koniec instrukcji if.
    Znalezienie pliku

    Znalezienie pliku

    9) Jaka jest różnica pomiędzy pojedynczymi cudzysłowami („) i podwójnymi cudzysłowami () w skryptach powłoki?

    Pojedyncze cudzysłowy („) i podwójne cudzysłowy () służą do umieszczania ciągów znaków w skryptach powłoki, ale zachowują się inaczej:

    • Pojedyncze cudzysłowy: wszystko pomiędzy pojedynczymi cudzysłowami jest traktowane jako ciąg znaków. Nazwy zmiennych i większość znaków specjalnych nie są rozwijane.
    • Podwójne cudzysłowy: Zmienne i niektóre znaki specjalne w podwójnych cudzysłowach są rozwijane. Treść podlega podstawieniu zmiennych i podstawieniu poleceń.

    #!/bin/bash

    abcd=Witam
    echo „$abcd” # Dane wyjściowe: $abcd
    echo $abcd # Wynik: Witam

    10) Jak można używać argumentów wiersza poleceń w skrypcie powłoki?

    Argumenty wiersza poleceń to wartości dostarczane do skryptu podczas jego wykonywania. Dostęp do nich można uzyskać w skrypcie za pomocą specjalnych zmiennych, takich jak 1 $, 2 $ itd., gdzie 1 $ reprezentuje pierwszy argument, 2 $ reprezentuje drugi argument i tak dalej.

    Na przykład: Jeśli nasza nazwa skryptu w `example.sh`

    #!/bin/bash

    echo Nazwa skryptu: $0
    echo Pierwszy argument: $1
    echo Drugi argument: 2 $

    Jeśli uruchomimy skrypt z `.example.sh hello_1 hello_2`, wyświetli się:

    argumenty cli

    argumenty cli

    11) Jak używać pętli for do iteracji po liście wartości?

    Utwórz nazwę skryptu `example.sh`.

    #!/bin/bash

    owoce=(jabłko banan wiśnia data)
    dla owoców w ${fruits[@]}; Do
    echo Aktualny owoc: $owoc
    zrobione

    Wyjaśnienie:

    Linia `fruits=` tworzy tablicę o nazwie owoce zawierającą cztery elementy: jabłko, banan, wiśnia i data.

    • dla owoców w ${fruits[@]}; do: Ta linia rozpoczyna pętlę for. Oto znaczenie każdej części:
    • dla owoców: deklaruje zmienną pętli zwaną owocami. W każdej iteracji pętli Fruit będzie przechowywać wartość bieżącego elementu z tablicy Fruits.
    • ${fruits[@]}: To jest rozwinięcie tablicy, które pobiera wszystkie elementy z tablicy Fruits. Składnia ${…} gwarantuje, że każdy element będzie traktowany jako oddzielny element.
    • do: To słowo kluczowe oznacza początek treści pętli.
    • echo Bieżący owoc: $owoc: Wewnątrz pętli w tej linii używane jest polecenie echo do wyświetlenia bieżącej wartości zmiennej owocowej pętli. Wypisuje komunikat w rodzaju Bieżący owoc: jabłko dla każdego owocu w tablicy.
    • gotowe: To słowo kluczowe oznacza koniec treści pętli. Informuje skrypt, że pętla została zakończona.
    dla pętli

    dla pętli

    12) Napisz skrypt powłoki, który oblicza sumę liczb całkowitych od 1 do N za pomocą pętli.

    Utwórz nazwę skryptu `example.sh`.

    #!/bin/bash

    echo Podaj liczbę (N):
    przeczytaj N
    suma=0
    for (( i=1; i<=$N; i++ )); Do
    suma=$((suma + i))
    zrobione
    echo Suma liczb całkowitych od 1 do $N to: $sum

    Wyjaśnienie:
    Skrypt rozpoczyna się od prośby o wprowadzenie liczby (N) za pomocą polecenia read. Ta liczba określi, ile razy pętla zostanie uruchomiona.

    1. Suma zmiennej jest inicjowana na 0. Ta zmienna będzie śledzić sumę liczb całkowitych.
    2. Pętla for zaczyna się od for (( i=1; i<=$N; i++ )). Ta struktura pętli służy do powtarzania zestawu działań określoną liczbę razy, w tym przypadku od 1 do wartości N.
    3. Wewnątrz pętli dzieją się następujące rzeczy:
      • i=1 ustawia zmienną pętli i na 1 na początku każdej iteracji.
      • Warunek pętli i<=$N sprawdza, czy i jest nadal mniejsze lub równe podanej liczbie N.
      • Jeżeli warunek jest spełniony, wykonywane jest ciało pętli.
      • sum=$((suma + i)) oblicza nową wartość sumy, dodając do niej bieżącą wartość i. Spowoduje to dodanie liczb całkowitych od 1 do bieżącej wartości i.
    4. Po każdej iteracji i++ zwiększa wartość i o 1.
    5. Pętla działa dopóki warunek i<=$N nie stanie się fałszywy (kiedy i stanie się większe niż N).
    6. Po zakończeniu pętli skrypt wyświetla sumę liczb całkowitych od 1 do wprowadzonej liczby N.

    439

    13) Utwórz skrypt, który wyszukuje określone słowo w pliku i zlicza jego wystąpienia.

    Utwórz nazwę skryptu `word_count.sh`

    #!/bin/bash

    echo Wpisz szukane słowo:
    przeczytaj słowo_celowe
    echo Podaj nazwę pliku:
    przeczytaj nazwę pliku
    liczba=$(grep -o -w $słowo_docelowe $nazwa pliku | wc -l)
    echo Słowo „$target_word” pojawia się $count razy w „$filename”.

    Wyjaśnienie:

    • echo Wpisz słowo do wyszukania:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o wprowadzenie słowa, którego chce szukać w pliku.
    • read target_word: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie target_word.
    • echo Wpisz nazwę pliku:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o podanie nazwy pliku, który chce przeszukać.
    • read filename: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie filename.
    • count=$(grep -o -w $target_word $nazwa pliku | wc -l): Ta linia wykonuje główną pracę skryptu. Rozłóżmy to dalej:
      • grep -o -w $słowo_docelowe $nazwa pliku: Ta część polecenia wyszukuje wystąpienia słowa_docelowego w określonej nazwie pliku. Opcje -o i -w zapewniają, że zliczane będą tylko dopasowania całych słów.
      • |: To jest potok, który pobiera dane wyjściowe poprzedniego polecenia i wysyła je jako dane wejściowe do następnego polecenia.
      • wc -l: Ta część polecenia wykorzystuje polecenie wc do zliczenia liczby wierszy na wejściu. Opcja -l specjalnie zlicza linie.
      • Całe polecenie oblicza liczbę wystąpień słowa_docelowego w pliku i przypisuje tę liczbę do zmiennej coun

    441

    14) Wyjaśnij różnice pomiędzy standardowym wyjściem (stdout) i standardowym wyjściem błędów (stderr).

    Główna różnica między standardowym wyjściem (stdout) a standardowym błędem (stderr) jest następująca:

    • Standardowe wyjście (stdout): Jest to domyślny strumień wyjściowy, do którego trafiają zwykłe dane wyjściowe polecenia. Domyślnie jest wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą>.
    • Błąd standardowy (stderr): Jest to strumień wyjściowy komunikatów o błędach i ostrzeżeń. Domyślnie jest również wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą 2>.

    15) Wyjaśnij koncepcję instrukcji warunkowych w skryptach powłoki.

    Instrukcje warunkowe w skryptach powłoki pozwalają nam podejmować decyzje i kontrolować przebieg naszego scenariusza w oparciu o określone warunki. Umożliwiają one naszemu skryptowi wykonywanie różnych zestawów poleceń w zależności od tego, czy dany warunek jest prawdziwy, czy fałszywy. Podstawowymi instrukcjami warunkowymi w skryptach powłoki są instrukcja if, instrukcja elif (opcjonalna) i instrukcja else (opcjonalna).

    Oto podstawowa struktura instrukcji warunkowej w skrypcie powłoki:

    jeśli [warunek]; Następnie
    # Polecenia do wykonania, jeśli warunek jest prawdziwy
    elif [inny_warunek]; Następnie
    # Polecenia do wykonania, jeśli inny_warunek jest prawdziwy (opcjonalnie)
    w przeciwnym razie
    # Polecenia do wykonania, jeśli żaden z warunków nie jest spełniony (opcjonalnie)
    Być

    Wyjaśnienie:

    • [warunek] = Polecenie, które ocenia warunek i zwraca prawdziwy (0) lub fałszywy (niezerowy) status wyjścia.
    • then = Jest to słowo kluczowe wskazujące, że następujące po nim polecenia zostaną wykonane, jeśli warunek ma wartość true.
    • elif = (skrót od else if) Jest to sekcja, która pozwala nam określić dodatkowe warunki do sprawdzenia.
    • else = jest to sekcja zawierająca polecenia, które zostaną wykonane, jeśli żaden z warunków nie zostanie spełniony.
    • fi = Jest to słowo kluczowe oznaczające koniec bloku warunkowego.

    16) Jak odczytać linie z pliku w skrypcie powłoki?

    Do czytaj linie z pliku w skrypcie powłoki, możemy użyć różnych metod, ale jednym z powszechnych podejść jest użycie pętli while w połączeniu z poleceniem read. Oto jak możemy to zrobić:

    #!/bin/bash
    plik=/home/jayeshkumar/jayesh.txt
    # Sprawdź, czy plik istnieje
    if [ -e $plik ]; Następnie
    podczas gdy IFS= czytaj -r linia; Do
    echo Odczytana linia: $line
    # Dodaj tutaj logikę przetwarzania
    gotowe <$plik
    w przeciwnym razie
    echo Nie znaleziono pliku: $file
    Być

    Wyjaśnienie:

    1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
    2. file=/home/jayeshkumar/jayesh.txt: Ta linia definiuje plik zmiennych i przypisuje pełną ścieżkę do pliku jayesh.txt w katalogu /home/jayeshkumar. Zmień tę ścieżkę, aby odpowiadała rzeczywistej ścieżce pliku, który chcesz przeczytać.
    3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Sprawdza, czy plik określony przez zmienną $file istnieje. Flaga -e sprawdza istnienie pliku.
    4. podczas gdy IFS= czytaj -r linia; do: Ta linia inicjuje pętlę while, która odczytuje linie z pliku.
      • IFS=: IFS (wewnętrzny separator pól) jest ustawiony na pustą wartość, aby zachować spacje początkowe i końcowe.
      • read -r line: odczytuje bieżącą linię z pliku i zapisuje ją w linii zmiennej.
    5. echo Odczyt linii: $line: Ta linia drukuje zawartość linii, która została odczytana z pliku. Zmienna $line zawiera zawartość bieżącej linii.
    6. # Dodaj tutaj logikę przetwarzania: To jest komentarz zastępczy, w którym możesz dodać własną logikę przetwarzania każdej linii. Na przykład możesz przeanalizować wiersz, wyodrębnić informacje lub wykonać określone działania w oparciu o treść.
    7. gotowe <$plik: Oznacza to koniec pętli while. Plik < $przekierowuje zawartość pliku do odczytu przez pętlę.
    8. else: Jeśli plik nie istnieje (warunek w instrukcji if jest fałszywy), skrypt wykonuje kod z gałęzi else.
    9. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że nie znaleziono określonego pliku.
    10. fi: Ta linia oznacza koniec instrukcji if.
    odczytanie pliku

    odczytanie pliku

    Tutaj użyliśmy ` pw ` polecenie, aby uzyskać ścieżkę bieżącego katalogu.

    17) Napisz w skrypcie powłoki funkcję obliczającą silnię podanej liczby.

    Oto skryptobliczyć silniędanego numeru.

    #!/bin/bash
    # Zdefiniuj funkcję do obliczenia silni
    oblicz_czynnik() {
    liczba = 1 USD
    fakt=1
    for ((i=1; i<=num; i++)); Do
    fakt=$((fakt * i))
    zrobione
    powtórz fakt
    }
    # Poproś użytkownika o wprowadzenie numeru
    echo Wpisz liczbę:
    przeczytaj numer_wejściowy
    # Wywołaj funkcjękalkuluj_czynnikową z numerem wejściowym
    Factorial_result=$(oblicz_czynnik $input_num)
    # Wyświetl wynik silni
    echo Silnia wartości $input_num to: $factorial_result

    Wyjaśnienie:

    1. Skrypt zaczyna się od linii #!/bin/bash określającej interpreter.
    2. call_factorial() jest zdefiniowana jako funkcja. Przyjmuje jeden argument, num, który jest liczbą, dla której należy obliczyć silnię.
    3. Wewnątrz funkcji fakt jest inicjowany na 1. Ta zmienna będzie przechowywać wynik silni.
    4. Pętla for iteruje od 1 do podanej liczby (num). W każdej iteracji mnoży bieżącą wartość faktu przez indeks pętli i.
    5. Po zakończeniu pętli zmienna faktu zawiera obliczoną silnię.
    6. Skrypt monituje użytkownika o wprowadzenie liczby za pomocą funkcji read.
    7. Funkcjakalkuluj_czynnik jest wywoływana z liczbą podaną przez użytkownika, a wynik jest zapisywany w zmiennejfactorial_result.
    8. Na koniec skrypt wyświetla obliczony wynik silni.
    Silnia

    Silnia

    18) Jak radzisz sobie z sygnałami takimi jak Ctrl+C w skrypcie powłoki?

    W skrypcie powłoki możesz obsługiwać sygnały takie jak Ctrl+C (znane również jako SIGINT) za pomocą polecenia trap. Ctrl+C generuje sygnał SIGINT, gdy użytkownik go naciśnie, aby przerwać działający skrypt lub program. Używając polecenia trap, możesz określić działania, które mają zostać podjęte po odebraniu określonego sygnału. Oto jak obsługujesz sygnały takie jak Ctrl+C w skrypcie powłoki:

    #!/bin/bash
    posprzątać() {
    echo Skrypt przerwany. Wykonywanie czyszczenia…
    # Dodaj tutaj swoje działania czyszczące
    wyjście 1
    }
    # Ustaw pułapkę, aby wywołać funkcję czyszczenia po odebraniu Ctrl+C (SIGINT).
    czyszczenie pułapek SIGINT
    # Reszta skryptu
    echo Bieganie…
    spać 10
    echo Zakończono.

    Obsługa sygnałów jest ważna, aby skrypty były niezawodne i sprawnie obsługiwały nieoczekiwane zakłócenia. Możesz dostosować funkcję czyszczenia do swoich konkretnych potrzeb, takich jak zamykanie plików, zatrzymywanie procesów lub rejestrowanie informacji przed zakończeniem skryptu.

    Wyjaśnienie:

    1. #!/bin/bash: Ta linia określa interpreter, który będzie używany do uruchamiania skryptu.
    2. cleanup() { … }: Definiuje funkcję o nazwie sprzątanie. Wewnątrz tej funkcji możesz uwzględnić wszelkie akcje, które należy wykonać w przypadku przerwania skryptu, takie jak zamknięcie plików, zwolnienie zasobów lub wykonanie innych zadań czyszczących.
    3. czyszczenie pułapek SIGINT: Polecenie pułapki służy do skonfigurowania procedury obsługi sygnału. W tym przypadku określa, że ​​po odebraniu sygnału SIGINT (Ctrl+C) powinna zostać wykonana funkcja czyszcząca.
    4. echo Działa…, śpi 10, echo Zakończono.: To tylko przykładowe polecenia symulujące wykonanie skryptu.

    446

    19) Utwórz skrypt, który sprawdza i usuwa zduplikowane linie w pliku tekstowym.

    Oto nasz skrypt linuksowy, w którym usuniemy zduplikowane linie z pliku tekstowego.

    #!/bin/bash
    plik_wejściowy=plik wejściowy.txt
    plik_wyjściowy=plik wyjściowy.txt
    sortuj $plik_wejściowy | uniq> $plik_wyjściowy
    echo Pomyślnie usunięto zduplikowane linie.

    Wyjaśnienie:

    1. Skrypt zaczyna się od shebang (#!/bin/bash), który wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. Zmienna input_file jest ustawiona na nazwę pliku wejściowego zawierającego zduplikowane linie (zmień tę nazwę na rzeczywistą nazwę pliku wejściowego).
    3. Zmienna plik_wyjściowy jest ustawiona na nazwę pliku wyjściowego, z którego zostaną usunięte duplikaty (zmień tę nazwę na żądaną nazwę pliku wyjściowego).
    4. Skrypt używa polecenia sort do sortowania wierszy w pliku wejściowym. Sortowanie linii zapewnia zgrupowanie zduplikowanych linii.
    5. Posortowane linie są następnie przepuszczane przez polecenie uniq, które usuwa kolejne zduplikowane linie. Dane wyjściowe tego procesu są przekierowywane do pliku wyjściowego.
    6. Po usunięciu duplikatów skrypt wyświetla komunikat o powodzeniu.
    usuwanie zduplikowanych linii

    usuwanie zduplikowanych linii

    Tutaj używamy ` kot `, aby wyświetlić tekst znajdujący się w pliku tekstowym.

    20) Napisz skrypt generujący bezpieczne losowe hasło.

    Oto nasz skrypt generujący bezpieczne losowe hasło.

    #!/bin/bash
    # Funkcja generowania losowego hasła
    wygeneruj_hasło() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Wywołaj funkcję i zapisz wygenerowane hasło
    hasło=$(wygeneruj_hasło)
    echo Wygenerowane hasło: $password

    Uwaga: Użytkownik może odpowiednio zmienić długość hasła, zastępując cyfrę `12`.

    Wyjaśnienie:

    1. Skrypt zaczyna się od shebang (#!/bin/bash), wskazującego, że należy go interpretować przy użyciu powłoki Bash.
    2. Funkcja generate_password służy do generowania losowego hasła. Oto jak to działa:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 dzieli przefiltrowane losowe dane na linie o szerokości 12 znaków każda.
      • head -n 1 wybiera pierwszą linię, skutecznie dając nam losową sekwencję znaków o długości 12.
    3. Do zmiennej hasła przypisywany jest wynik wywołania funkcji generate_password.
    4. Na koniec wygenerowane hasło jest wyświetlane za pomocą echa.

    448

    21) Napisz skrypt powłoki, który obliczy całkowity rozmiar wszystkich plików w katalogu.

    Oto skrypt powłoki obliczający całkowity rozmiar wszystkich plików w katalogu.

    #!/bin/bash
    katalog=/ścieżka/do/twojego/katalogu
    total_size=$(du -csh $katalog | grep total | awk „{print $1}”)
    echo Całkowity rozmiar plików w katalogu $: $total_size

    Wyjaśnienie:

    1. Skrypt zaczyna się od znaku #!/bin/bash shebang, wskazującego, że należy go interpretować przy użyciu powłoki Bash.
    2. Zmienna katalogu jest ustawiona na ścieżkę katalogu, dla którego chcesz obliczyć całkowity rozmiar pliku. Zastąp /path/to/your/directory rzeczywistą ścieżką.
    3. Polecenie du służy do szacowania wykorzystania przestrzeni plików. Stosowane opcje to:
      • -c: Wygeneruj sumę całkowitą.
      • -s: Wyświetla tylko całkowity rozmiar określonego katalogu.
      • -h: Rozmiar wydruku w formacie czytelnym dla człowieka (np. KB, MB, GB).
    4. Dane wyjściowe du są przesyłane do grep total w celu odfiltrowania linii zawierającej całkowity rozmiar.
    5. awk „{print $1}” służy do wyodrębnienia pierwszego pola (całkowitego rozmiaru) z linii.
    6. Obliczony całkowity rozmiar jest przechowywany w zmiennej total_size.
    7. Na koniec skrypt wyświetla całkowity rozmiar za pomocą echo.
    Całkowity rozmiar plików

    Całkowity rozmiar plików

    Tutaj użyliśmy ` pw ` polecenie, aby zobaczyć bieżącą ścieżkę katalogu.

    22) Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki.

    Funkcja `jeśli`Staiment Oświadczenie „elif”.
    Zamiar Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki. Zapewnia alternatywne warunki umożliwiające sprawdzenie, czy początkowy warunek if jest fałszywy.
    stosowanie Używany do warunku początkowego. Używane po początkowym warunku if w celu sprawdzenia dodatkowych warunków.
    liczba bloków Może mieć tylko jeden, jeśli jest blokowany. Może mieć wiele bloków elif, ale tylko jeden blok else (opcjonalnie).
    Wykonanie Wykonuje blok kodu powiązany z instrukcją if, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, wykonywany jest blok else (jeśli występuje) (opcjonalnie). Sprawdza każdy warunek elif w kolejności. Jeśli jeden warunek elif jest prawdziwy, wykonywany jest odpowiedni blok kodu, a skrypt kończy cały blok warunkowy. Jeśli żaden z warunków elif nie jest spełniony, wykonywany jest blok else (jeśli występuje).
    Struktury zagnieżdżone Można je zagnieżdżać w innych blokach if, elif lub else. Nie można go zagnieżdżać w innym bloku elif, ale można go użyć w bloku if lub else.

    Rozumiemy to na przykładzie.

    #!/bin/bash
    liczba=5
    jeśli [ $liczba -gt 10 ]; Następnie
    echo Liczba $ jest większa niż 10
    w przeciwnym razie
    echo $liczba nie jest większa niż 10
    Być
    Echo ---
    jeśli [ $liczba -gt 10 ]; Następnie
    echo Liczba $ jest większa niż 10
    elif [$liczba -równ. 10]; Następnie
    echo $liczba jest równa 10
    w przeciwnym razie
    echo $liczba jest mniejsza niż 10
    Być

    Wyjaśnienie:

    W tym przykładzie pierwszy blok if sprawdza, czy liczba jest większa niż 10. Jeśli nie, wypisuje komunikat wskazujący, że liczba nie jest większa niż 10. Drugi blok z instrukcjami elif sprawdza po kolei wiele warunków, aż jeden z nich będzie prawdziwy. W tym przypadku, ponieważ wartość liczby wynosi 5, wynikiem będzie:

    różnica if_elif

    różnica if_elif

    23) Jak używać pętli while do wielokrotnego wykonywania poleceń?

    Pętla while jest używana w skryptach powłoki do wielokrotnego wykonywania zestawu poleceń, o ile określony warunek jest spełniony. Pętla kontynuuje wykonywanie poleceń, aż warunek stanie się fałszywy.

    Oto podstawowa składnia pętli while:

    podczas gdy [warunek]; Do
    # Polecenia do wykonania
    zrobione

    Wyjaśnienie:

    1. Pętla „while” zaczyna się od słowa kluczowego „while”, po którym następuje warunek ujęty w nawiasy kwadratowe „[ ]”.
    2. Ciało pętli zawierające polecenia do wykonania jest ujęte w słowa kluczowe „do” i „done”.
    3. Pętla najpierw sprawdza warunek. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w treści pętli. Po wykonaniu treści pętli warunek jest ponownie sprawdzany i proces jest powtarzany, aż warunek stanie się fałszywy.

    Przykład: Jeśli chcemy wydrukować liczby od 1 do 5

    #!/bin/bash
    licznik=1
    podczas gdy [ $licznik -le 5 ]; Do
    echo Numer: $licznik
    licznik=$((licznik + 1))
    zrobione

    Wyjaśnienie:

    • Zmienna licznika jest ustawiona na 1.
    • Pętla while sprawdza, czy wartość licznika jest mniejsza lub równa 5. Dopóki ten warunek jest spełniony, pętla kontynuuje wykonywanie.
    • Wewnątrz pętli bieżąca wartość licznika jest drukowana za pomocą echo.
    • Licznik jest zwiększany o 1 za pomocą wyrażenia $((licznik + 1)).
    pętla while

    pętla while

    24) Utwórz skrypt powłoki, który znajdzie i wyświetli listę wszystkich pustych plików w katalogu.

    Skrypt powłoki, którego możesz użyć do znalezienia i wyświetlenia wszystkich pustych plików w katalogu za pomocą poleceń `find` i `stat`:

    #!/bin/bash
    katalog = 1 $ ″
    if [ -z $katalog ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być

    Jeśli [ ! -d $katalog]; Następnie
    echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
    wyjście 1
    Być
    echo Puste pliki w katalogu $:
    znajdź katalog $ -typ f -pusty

    Wyjaśnienie:

    1. ` #!/bin/bash `: Nazywa się to shebang i mówi systemowi operacyjnemu, aby użył powłoki Bash do interpretacji i wykonania skryptu.
    2. ` katalog = 1 $ ″ `: Ta linia przypisuje pierwszy argument wiersza poleceń (oznaczony jako $1) do zmiennej ` informator `.
    3. ` if [ -z $katalog ]; Następnie `: Ta linia rozpoczyna instrukcję if, która sprawdza, czy ` informator ` zmienna jest pusta (-z sprawdza pusty ciąg znaków).
    4. ` echo Użycie: $0 `: Jeśli katalog jest pusty, ta linia wyświetla komunikat o użyciu, gdzie ` 0 dolarów ` oznacza nazwę skryptu.
    5. ` wyjście 1 `: Ta linia kończy skrypt z kodem zakończenia ` 1 `, wskazując błąd.
    6. ` Być `: Ta linia oznacza koniec ` Jeśli ` oświadczenie.
    7. ` Jeśli [ ! -d $katalog]; Następnie `: Spowoduje to uruchomienie kolejnej instrukcji if w celu sprawdzenia, czy podany katalog istnieje (` -D ` testuje katalog).
    8. ` echo Błąd: „katalog $” nie jest prawidłowym katalogiem. `: Jeśli podany katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
    9. ` wyjście 1 `: Kończy skrypt z kodem zakończenia ` 1 `.
    10. ` Być `: Oznacza koniec drugiego ` jeśli` oświadczenie.
    11. ` echo Puste pliki w katalogu $: `: Jeśli do tej pory wszystko było w porządku, w tej linii zostanie wyświetlony komunikat wskazujący, że skrypt wyświetli listę pustych plików w określonym katalogu.
    12. ` znajdź katalog $ -typ f -pusty `: Ta linia używa ` znajdować ` polecenie wyszukiwania pustych plików (` -pusty `) typu zwykłe pliki (` -wpisz f `) w określonym katalogu. Następnie wyświetla listę tych pustych plików.
    Znajdowanie pustych plików

    Znajdowanie pustych plików

    Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/

    25) Jaki jest cel polecenia read w skryptach powłoki?

    Polecenie read w skryptach powłoki pozwala skryptowi poprosić Cię o informacje. To tak, jakby komputer zadał Ci pytanie i czekał na Twoją odpowiedź. Jest to przydatne w przypadku skryptów, które wymagają wpisania czegoś lub gdy skrypt musi pracować z informacjami z plików. Polecenie read pomaga skryptowi zatrzymać się i poczekać na to, co wpiszesz, a następnie może wykorzystać te informacje do wykonania dalszych czynności w skrypcie.

    Składnia polecenia odczytu:

    read variable_name>

    Przykład : Jeśli chcemy przyjąć nazwę jako dane wejściowe od użytkownika, aby ją wydrukować.

    #!/bin/bash
    echo Proszę podać swoje imię:
    przeczytaj imię
    echo Witaj, $imie!

    453

    czytaj imię

    Podsumowując, polecenie read służy do przechwytywania danych wprowadzanych przez użytkownika lub danych z plików w skryptach powłoki, dzięki czemu skrypty są bardziej interaktywne i wszechstronne.

    26) Napisz skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

    Oto skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

    #!/bin/bash
    katalog = 1 $ ″
    if [ -z $katalog ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być

    Jeśli [ ! -d $katalog]; Następnie

    echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
    wyjście 1
    Być

    katalog $ CD || wyjście 1

    dla pliku w *; Do
    jeśli [ -f $plik ]; Następnie
    nowa nazwa=$(echo $plik | tr „A-Z” „a-z”)
    [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa
    Być
    zrobione

    Wyjaśnienie:

    1. #!/bin/bash : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. katalog = 1 $ ″ : Ta linia przypisuje pierwszy argument wiersza poleceń do katalogu zmiennych.
    3. if [ -z $katalog ]; Następnie : Ta linia sprawdza, czy zmienna katalogu jest pusta (podczas uruchamiania skryptu nie podano żadnego argumentu).
    4. echo Użycie: $0 : Jeśli katalog jest pusty, w tej linii zostanie wydrukowana informacja o użyciu zawierająca nazwę skryptu ($0).
    5. wyjście 1 : Ta linia kończy skrypt z kodem zakończenia 1, wskazującym, że wystąpił błąd.
    6. F i: Oznacza to koniec pierwszej instrukcji if.
    7. Jeśli [ ! -d $katalog]; Następnie : Ta linia sprawdza, czy podany katalog nie istnieje (-d sprawdza katalog).
    8. echo Błąd: „katalog $” nie jest prawidłowym katalogiem. : Jeśli określony katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
    9. wyjście 1 : Opuszcza skrypt z kodem wyjścia 1.
    10. Być : Oznacza koniec drugiej instrukcji if.
    11. katalog $ CD || wyjście 1 : Zmienia bieżący katalog roboczy na określony katalog. Jeśli zmiana katalogu nie powiedzie się (np. katalog nieistniejący), skrypt zakończy działanie z kodem błędu.
    12. dla pliku w *; Do: I dla pliku w *; Do: inicjuje pętlę, która iteruje po wszystkich elementach w bieżącym katalogu (* pasuje do wszystkich nazw plików).
    13. jeśli [ -f $plik ]; Następnie : Sprawdza, czy bieżący element iteracji pętli jest zwykłym plikiem (-f sprawdza zwykły plik).
    14. nowa nazwa=$(echo $plik | tr „A-Z” „a-z”) : Konwertuje bieżącą nazwę pliku ($file) na małe litery za pomocą polecenia tr i zapisuje wynik w zmiennej newname.
    15. [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa : porównuje oryginalną nazwę pliku z nową nazwą pliku zawierającą małe litery. Jeśli są różne, zmienia nazwę pliku za pomocą polecenia mv.
    16. Być : Oznacza koniec wewnętrznej instrukcji if.
    17. zrobione : Oznacza koniec pętli.

    454

    Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/test

    27) Jak można używać operacji arytmetycznych w skrypcie powłoki?

    Operacje arytmetyczne można wykonywać w skrypcie powłoki przy użyciu różnych wbudowanych metod. Powłoka zapewnia mechanizmy prostych obliczeń arytmetycznych przy użyciu rozwinięcia arytmetycznego, takie jak:

    1. Rozszerzenie arytmetyczne ($((…)))
    2. Używanie polecenia wyraż
    3. Używanie polecenia let

    Oto nasz skrypt powłoki wyjaśniający wszystkie trzy metody operacji arytmetycznych.

    #!/bin/bash
    liczba1=10
    liczba2=5

    #Rozwinięcie arytmetyczne ($((…)))

    wynik=$((liczba1 + liczba2))
    echo Suma: $wynik

    #Używanie polecenia wyraż

    suma=$(wyrażenie $num1 + $num2)
    echo Suma: $suma

    #Używanie polecenia let

    niech suma = liczba1 + liczba2
    echo Suma: $suma

    Wyjaśnienie:

    1. `#!/bin/bash` : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. `liczba1=10` i ` liczba2=5` : Linie te przypisują wartości 10 i 5 zmiennym ` numer1 ` i ` liczba2 `, odpowiednio.
    3. `#Rozwinięcie arytmetyczne ($((…)))` : To jest komentarz wskazujący początek sekcji demonstrującej rozwinięcie arytmetyczne.
    4. `wynik=$((liczba1 + liczba2))` : W tej linii zastosowano rozwinięcie arytmetyczne do obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` wynik ` zmienna.
    5. `echo Suma: $wynik` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` wynik ` zmienna.
    6. `#Używanie polecenia wyrażenia` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` wyr ` polecenie wykonywania operacji arytmetycznych.
    7. `suma=$(wyrażenie $num1 + $num2)` : Ta linia używa ` wyr ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` suma ` zmienna. Należy pamiętać, że ` wyr Polecenie ` wymaga spacji wokół operatorów.
    8. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
    9. `#Używanie polecenia let` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` pozwalać ` polecenie wykonywania operacji arytmetycznych.
    10. `niech suma = liczba1 + liczba2″` : Ta linia używa ` pozwalać ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przypisuje wynik do ` suma ` zmienna. ` pozwalać Polecenie ` nie wymaga spacji wokół operatorów.
    11. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
    arytmetyka

    arytmetyka

    28) Utwórz skrypt sprawdzający, czy host sieciowy jest osiągalny.

    Oto prosty skrypt powłoki, który używa polecenia ping do sprawdzenia, czy host sieciowy jest osiągalny:

    #!/bin/bash
    gospodarz = 1 $ ″
    jeśli [ -z $host ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być
    ping -c 4 $host

    jeśli [$? -równ. 0]; Następnie
    echo $host jest osiągalny.
    w przeciwnym razie
    echo $host jest nieosiągalny.
    Być

    Wyjaśnienie:

    1. Jako argument przyjmuje nazwę hosta lub adres IP i sprawdza, czy argument został podany.
    2. Jeśli nie podano żadnego argumentu, wyświetla komunikat o użyciu i kończy działanie.
    3. Używa polecenia ping z opcją -c 4 do wysyłania czterech żądań echa ICMP do określonego hosta.
    4. Po uruchomieniu polecenia ping sprawdza status wyjścia ($?). Jeśli status wyjścia wynosi 0, oznacza to, że host jest osiągalny i skrypt wyświetla komunikat o powodzeniu. W przeciwnym razie drukuje komunikat o błędzie.

    456

    Notatka : Musimy podać nazwę hosta jako argument podczas uruchamiania skryptu. Tutaj użyliśmy google.com

    29) Napisz skrypt powłoki, aby znaleźć największy element w tablicy:

    Oto skrypt powłoki umożliwiający znalezienie największego elementu w tablicy.

    #!/bin/bash
    # Zadeklaruj tablicę
    tablica=(3 56 24 89 67)

    # Zainicjuj zmienną, aby przechowywać maksymalną wartość, zaczynając od pierwszego elementu

    max=${tablica[0]}

    # Iteruj po tablicy

    dla liczby w ${tablica[@]}; Do

    # Porównaj każdy element z bieżącym maksimum

    jeśli ((liczba> maks.)); Następnie
    maks.=$liczba
    Być
    zrobione

    # Wydrukuj wartość maksymalną

    echo Maksymalny element tablicy to: $max

    Wyjaśnienie:

    1. ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. ` tablica=(3 56 24 89 67) `: Tablica jest zadeklarowana i zainicjowana wartościami.
    3. ` max=${tablica[0]} `: `max` jest inicjalizowane pierwszym elementem tablicy.
    4. ` dla liczby w ${tablica[@]}; Do `: Pętla „for” służy do iteracji po elementach tablicy.
    5. ` jeśli ((liczba> maks.)); Następnie `: Instrukcja `if` sprawdza, czy bieżący element `num` jest większy od bieżącego maksimum `max`.
    6. ` max=$num`: Jeśli`num ` jest większe niż `max`, `max` jest aktualizowane o wartość num.
    7. ` zrobione `: Pętla „for” jest zamknięta.
    8. ` echo Maksymalny element tablicy to: $max `: Na koniec skrypt wypisuje maksymalną wartość znalezioną w tablicy.
    461

    największa liczba

    30) Napisz skrypt obliczający sumę elementów w tablicy.

    #!/bin/bash

    # Zadeklaruj tablicę

    tablica=(1 65 22 19 94)

    # Zainicjuj zmienną, aby zapisać sumę

    suma=0

    # Iteruj po tablicy i dodaj każdy element do sumy

    dla liczby w ${tablica[@]}; Do
    rano=$((rano + rano))
    zrobione

    # Wydrukuj sumę

    echo Suma elementów tablicy wynosi: $sum

    Wyjaśnienie:

    ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.

    ` tablica=(1 65 22 19 94) `: Tablica jest zadeklarowana i zainicjowana wartościami.

    ` suma=0 `:` suma ` jest inicjalizowane na zero, aby przechowywać sumę elementów.

    ` dla liczby w ${tablica[@]}; Do `: A` Do Pętla ` służy do iteracji po elementach tablicy.

    ` rano=$((rano + rano)) `: Wewnątrz pętli każdy element ` na jednego ` dodaje się do ` suma ` zmienna.

    ` zrobione `: ` Do ` pętla jest zamknięta.

    `echo Suma elementów tablicy wynosi: $sum`: Na koniec skrypt wypisuje sumę wszystkich elementów tablicy.

    462

    Suma elementów

    Dowiedz się więcej o skryptach powłoki

    Wniosek

    Wszyscy maniacy wiemy, że skrypt powłoki jest bardzo przydatny w zwiększaniu produktywności pracy, a także oszczędzaniu czasu. Tak więc w tym artykule omówiliśmy 30 bardzo przydatnych i najbardziej oszukańczych przykładów skryptów powłoki . Mamy nadzieję, że ten kompletny przewodnik na temat przykładowych skryptów powłoki pomoże Ci zrozumieć wszystko na temat skryptów powłoki.



    `: Jeśli katalog jest pusty, ta linia wyświetla komunikat o użyciu, gdzie ` 0 dolarów ` oznacza nazwę skryptu.
  5. ` wyjście 1 `: Ta linia kończy skrypt z kodem zakończenia ` 1 `, wskazując błąd.
  6. ` Być `: Ta linia oznacza koniec ` Jeśli ` oświadczenie.
  7. ` Jeśli [ ! -d $katalog]; Następnie `: Spowoduje to uruchomienie kolejnej instrukcji if w celu sprawdzenia, czy podany katalog istnieje (` -D ` testuje katalog).
  8. ` echo Błąd: „katalog $” nie jest prawidłowym katalogiem. `: Jeśli podany katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. ` wyjście 1 `: Kończy skrypt z kodem zakończenia ` 1 `.
  10. ` Być `: Oznacza koniec drugiego ` jeśli` oświadczenie.
  11. ` echo Puste pliki w katalogu $: `: Jeśli do tej pory wszystko było w porządku, w tej linii zostanie wyświetlony komunikat wskazujący, że skrypt wyświetli listę pustych plików w określonym katalogu.
  12. ` znajdź katalog $ -typ f -pusty `: Ta linia używa ` znajdować ` polecenie wyszukiwania pustych plików (` -pusty `) typu zwykłe pliki (` -wpisz f `) w określonym katalogu. Następnie wyświetla listę tych pustych plików.
Znajdowanie pustych plików

Znajdowanie pustych plików

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/

25) Jaki jest cel polecenia read w skryptach powłoki?

Polecenie read w skryptach powłoki pozwala skryptowi poprosić Cię o informacje. To tak, jakby komputer zadał Ci pytanie i czekał na Twoją odpowiedź. Jest to przydatne w przypadku skryptów, które wymagają wpisania czegoś lub gdy skrypt musi pracować z informacjami z plików. Polecenie read pomaga skryptowi zatrzymać się i poczekać na to, co wpiszesz, a następnie może wykorzystać te informacje do wykonania dalszych czynności w skrypcie.

Składnia polecenia odczytu:

read variable_name>

Przykład : Jeśli chcemy przyjąć nazwę jako dane wejściowe od użytkownika, aby ją wydrukować.

#!/bin/bash
echo Proszę podać swoje imię:
przeczytaj imię
echo Witaj, $imie!

453

czytaj imię

Podsumowując, polecenie read służy do przechwytywania danych wprowadzanych przez użytkownika lub danych z plików w skryptach powłoki, dzięki czemu skrypty są bardziej interaktywne i wszechstronne.

26) Napisz skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

Oto skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie:

W przypadku wszystkich dystrybucji Linuksa skrypt powłoki jest jak magiczna różdżka, która automatyzuje proces, oszczędza czas użytkowników i zwiększa produktywność. Ten samouczek dotyczący skryptowania wprowadzi Cię w ponad 25 przykładów tworzenia skryptów.

Zanim jednak przejdziemy do tematu skrypty powłoki przykłady, przyjrzyjmy się skryptowi powłoki i rzeczywistym przypadkom użycia skryptów powłoki.

Co to jest skrypt powłoki?

Cóż, skorupa jest interfejs wiersza polecenia ( interpreter wiersza poleceń ), który działa w oknie tekstowym, w którym użytkownicy mogą zarządzać poleceniami powłoki i je wykonywać. Z drugiej strony proces pisania zestawu poleceń do wykonania w systemie Linux. Plik zawierający takie instrukcje nazywany jest skryptem bash.

Zastosowania skryptów powłoki

Poniżej znajduje się kilka typowych zastosowań skryptu powłoki:

  • Automatyzacja zadań – Można go używać do automatyzacji powtarzalnych zadań, takich jak regularne tworzenie kopii zapasowych i zadania instalacji oprogramowania.
  • Dostosowywanie - Można używać skryptów powłoki do projektowania środowiska wiersza poleceń i łatwego wykonywania zadań zgodnie z potrzebami.
  • Zarządzanie plikami - Skryptów powłoki można również używać do zarządzania plikami i katalogami oraz manipulowania nimi, na przykład przenoszenia, kopiowania, zmiany nazwy lub usuwania plików.

Przykłady skryptów powłoki w systemie Linux

1) Co oznacza shebang (#!) na początku skryptu powłoki?

The shebang (#!) na początku skryptu wskazuje interpreter, który powinien zostać użyty do wykonania skryptu. Mówi systemowi, która powłoka lub interpreter powinien interpretować polecenia skryptu.

Na przykład: Załóżmy, że mamy skrypt o nazwie mójscript.sh napisane w powłoce Bash:

szulernia

szulernia

W tym przykładzie:

  • Znak #!/bin/bash na początku skryptu wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  • Polecenia echo służą do drukowania komunikatów na terminalu.

2) Jak uruchomić skrypt powłoki z wiersza poleceń?

Aby uruchomić skrypt powłoki z wiersza poleceń, musimy wykonać następujące kroki:

  • Upewnij się, że plik skryptu ma uprawnienia do wykonywania, używając polecenie chmod :
chmod +x myscript.sh>
  • Wykonaj skrypt, używając jego nazwy pliku:
./myscript.sh>

Tutaj musisz wymienić myscript.sh z twoją nazwą skryptu.

3) Napisz skrypt powłoki, który wypisuje plik techcodeview.com na terminalu.

Utwórz nazwę skryptu `myscript.sh` (używamy ` ponieważ ` edytor, możesz wybrać dowolny edytor)

vim myscript.sh>

#!/bin/bash
# Ten skrypt drukuje plik techcodeview.com na terminalu
echo techcodeview.com

Nazwa wydruku

Nazwa wydruku

Sprawiamy, że nasz skrypt jest wykonywalny, używając `chmod +x`, a następnie wykonujemy go za pomocą `./myscipt.sh` i uzyskujemy żądane wyjście techcodeview.com.

4) Wyjaśnij cel polecenia echo w skryptach powłoki.

The polecenie echa służy do wyświetlania tekstu lub zmiennych na terminalu. Jest powszechnie używany do drukowania komunikatów, wartości zmiennych i generowania wyników programu.

434

polecenie echa

W tym przykładzie wykonaliśmy `echo` bezpośrednio na terminalu, ponieważ działa to tak samo w skrypcie powłoki.

5) Jak przypisać wartość do zmiennej w skrypcie powłoki?

Zmiennym przypisuje się wartości za pomocą operatora przypisania =.

Na przykład:

#!/bin/bash
# Przypisywanie wartości do zmiennej
imię = Jayesh
wiek=21
echo $imię $wiek

Wyjaśnienie:

  • Zmiennej nazwie przypisano wartość Jayesh.
  • Zmiennej wiek przypisano wartość 21.
  • echo służy do drukowania, a `$nazwa` `$wiek` służy do wywoływania wartości przechowywanej w zmiennych.

435

6) Napisz skrypt powłoki, który jako dane wejściowe pobiera nazwę użytkownika i wita go.

Utwórz skrypt o nazwie `example.sh`.

#!/bin/bash
# Zapytaj użytkownika o jego imię i nazwisko
echo Jak masz na imię?
przeczytaj imię
# Powitaj użytkownika
echo Witaj, $imie! Miło mi cię poznać.

Wyjaśnienie:

  • #!/bin/bash: To jest linia Shebang. Mówi systemowi, aby użył interpretera Bash do wykonania skryptu.
  • # Zapytaj użytkownika o jego imię i nazwisko: To jest komentarz. Zapewnia kontekst dotyczący nadchodzącego kodu. Komentarze są ignorowane przez tłumacza.
  • echo Jak się nazywasz?: Polecenie echo służy do wyświetlania tekstu w cudzysłowie na terminalu.
  • read name: Polecenie read czeka, aż użytkownik wprowadzi tekst i zapisuje go w nazwie zmiennej.
  • echo Witaj, $imię! Miło cię poznać.: Ta linia używa polecenia echo do wydrukowania wiadomości powitalnej zawierającej wartość zmiennej name, która została pobrana z danych wprowadzonych przez użytkownika.

436

7) Jak dodać komentarze do skryptu powłoki?

Komentarze w skryptach powłoki służą do zapewnienia wyjaśnień lub kontekstu kodu. Są one ignorowane przez tłumacza i są przeznaczone wyłącznie dla ludzi czytających scenariusz. Możesz dodawać komentarze, używając symbolu #.

#!/bin/bash
# To jest komentarz wyjaśniający cel skryptu
powtórz GFG

8) Utwórz skrypt powłoki, który sprawdza, czy w bieżącym katalogu istnieje plik.

Oto skrypt sprawdzający, czy w bieżącym katalogu istnieje plik o nazwie example.txt:

#!/bin/bash
plik=przykład.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
echo Plik istnieje: $plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=example.txt: Ta linia definiuje plik zmiennych i przypisuje mu wartość example.txt. Możesz zastąpić tę nazwę plikiem, który chcesz sprawdzić.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Warunek [ -e $plik ] sprawdza, czy plik określony przez wartość zmiennej pliku istnieje. Flaga -e służy do sprawdzania istnienia pliku.
  4. echo Plik istnieje: $plik: Jeśli warunek jest spełniony (tj. plik istnieje), w tej linii zostanie wyświetlony komunikat wskazujący, że plik istnieje, wraz z nazwą pliku.
  5. else: Jeśli warunek jest fałszywy (tzn. plik nie istnieje), skrypt wykonuje kod z gałęzi else.
  6. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że określony plik nie został znaleziony, wraz z jego nazwą.
  7. fi: Ta linia oznacza koniec instrukcji if.
Znalezienie pliku

Znalezienie pliku

9) Jaka jest różnica pomiędzy pojedynczymi cudzysłowami („) i podwójnymi cudzysłowami () w skryptach powłoki?

Pojedyncze cudzysłowy („) i podwójne cudzysłowy () służą do umieszczania ciągów znaków w skryptach powłoki, ale zachowują się inaczej:

  • Pojedyncze cudzysłowy: wszystko pomiędzy pojedynczymi cudzysłowami jest traktowane jako ciąg znaków. Nazwy zmiennych i większość znaków specjalnych nie są rozwijane.
  • Podwójne cudzysłowy: Zmienne i niektóre znaki specjalne w podwójnych cudzysłowach są rozwijane. Treść podlega podstawieniu zmiennych i podstawieniu poleceń.

#!/bin/bash

abcd=Witam
echo „$abcd” # Dane wyjściowe: $abcd
echo $abcd # Wynik: Witam

10) Jak można używać argumentów wiersza poleceń w skrypcie powłoki?

Argumenty wiersza poleceń to wartości dostarczane do skryptu podczas jego wykonywania. Dostęp do nich można uzyskać w skrypcie za pomocą specjalnych zmiennych, takich jak 1 $, 2 $ itd., gdzie 1 $ reprezentuje pierwszy argument, 2 $ reprezentuje drugi argument i tak dalej.

Na przykład: Jeśli nasza nazwa skryptu w `example.sh`

#!/bin/bash

echo Nazwa skryptu: $0
echo Pierwszy argument: $1
echo Drugi argument: 2 $

Jeśli uruchomimy skrypt z `.example.sh hello_1 hello_2`, wyświetli się:

argumenty cli

argumenty cli

11) Jak używać pętli for do iteracji po liście wartości?

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

owoce=(jabłko banan wiśnia data)
dla owoców w ${fruits[@]}; Do
echo Aktualny owoc: $owoc
zrobione

Wyjaśnienie:

Linia `fruits=` tworzy tablicę o nazwie owoce zawierającą cztery elementy: jabłko, banan, wiśnia i data.

  • dla owoców w ${fruits[@]}; do: Ta linia rozpoczyna pętlę for. Oto znaczenie każdej części:
  • dla owoców: deklaruje zmienną pętli zwaną owocami. W każdej iteracji pętli Fruit będzie przechowywać wartość bieżącego elementu z tablicy Fruits.
  • ${fruits[@]}: To jest rozwinięcie tablicy, które pobiera wszystkie elementy z tablicy Fruits. Składnia ${…} gwarantuje, że każdy element będzie traktowany jako oddzielny element.
  • do: To słowo kluczowe oznacza początek treści pętli.
  • echo Bieżący owoc: $owoc: Wewnątrz pętli w tej linii używane jest polecenie echo do wyświetlenia bieżącej wartości zmiennej owocowej pętli. Wypisuje komunikat w rodzaju Bieżący owoc: jabłko dla każdego owocu w tablicy.
  • gotowe: To słowo kluczowe oznacza koniec treści pętli. Informuje skrypt, że pętla została zakończona.
dla pętli

dla pętli

12) Napisz skrypt powłoki, który oblicza sumę liczb całkowitych od 1 do N za pomocą pętli.

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

echo Podaj liczbę (N):
przeczytaj N
suma=0
for (( i=1; i<=$N; i++ )); Do
suma=$((suma + i))
zrobione
echo Suma liczb całkowitych od 1 do $N to: $sum

Wyjaśnienie:
Skrypt rozpoczyna się od prośby o wprowadzenie liczby (N) za pomocą polecenia read. Ta liczba określi, ile razy pętla zostanie uruchomiona.

  1. Suma zmiennej jest inicjowana na 0. Ta zmienna będzie śledzić sumę liczb całkowitych.
  2. Pętla for zaczyna się od for (( i=1; i<=$N; i++ )). Ta struktura pętli służy do powtarzania zestawu działań określoną liczbę razy, w tym przypadku od 1 do wartości N.
  3. Wewnątrz pętli dzieją się następujące rzeczy:
    • i=1 ustawia zmienną pętli i na 1 na początku każdej iteracji.
    • Warunek pętli i<=$N sprawdza, czy i jest nadal mniejsze lub równe podanej liczbie N.
    • Jeżeli warunek jest spełniony, wykonywane jest ciało pętli.
    • sum=$((suma + i)) oblicza nową wartość sumy, dodając do niej bieżącą wartość i. Spowoduje to dodanie liczb całkowitych od 1 do bieżącej wartości i.
  4. Po każdej iteracji i++ zwiększa wartość i o 1.
  5. Pętla działa dopóki warunek i<=$N nie stanie się fałszywy (kiedy i stanie się większe niż N).
  6. Po zakończeniu pętli skrypt wyświetla sumę liczb całkowitych od 1 do wprowadzonej liczby N.

439

13) Utwórz skrypt, który wyszukuje określone słowo w pliku i zlicza jego wystąpienia.

Utwórz nazwę skryptu `word_count.sh`

#!/bin/bash

echo Wpisz szukane słowo:
przeczytaj słowo_celowe
echo Podaj nazwę pliku:
przeczytaj nazwę pliku
liczba=$(grep -o -w $słowo_docelowe $nazwa pliku | wc -l)
echo Słowo „$target_word” pojawia się $count razy w „$filename”.

Wyjaśnienie:

  • echo Wpisz słowo do wyszukania:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o wprowadzenie słowa, którego chce szukać w pliku.
  • read target_word: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie target_word.
  • echo Wpisz nazwę pliku:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o podanie nazwy pliku, który chce przeszukać.
  • read filename: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie filename.
  • count=$(grep -o -w $target_word $nazwa pliku | wc -l): Ta linia wykonuje główną pracę skryptu. Rozłóżmy to dalej:
    • grep -o -w $słowo_docelowe $nazwa pliku: Ta część polecenia wyszukuje wystąpienia słowa_docelowego w określonej nazwie pliku. Opcje -o i -w zapewniają, że zliczane będą tylko dopasowania całych słów.
    • |: To jest potok, który pobiera dane wyjściowe poprzedniego polecenia i wysyła je jako dane wejściowe do następnego polecenia.
    • wc -l: Ta część polecenia wykorzystuje polecenie wc do zliczenia liczby wierszy na wejściu. Opcja -l specjalnie zlicza linie.
    • Całe polecenie oblicza liczbę wystąpień słowa_docelowego w pliku i przypisuje tę liczbę do zmiennej coun

441

14) Wyjaśnij różnice pomiędzy standardowym wyjściem (stdout) i standardowym wyjściem błędów (stderr).

Główna różnica między standardowym wyjściem (stdout) a standardowym błędem (stderr) jest następująca:

  • Standardowe wyjście (stdout): Jest to domyślny strumień wyjściowy, do którego trafiają zwykłe dane wyjściowe polecenia. Domyślnie jest wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą>.
  • Błąd standardowy (stderr): Jest to strumień wyjściowy komunikatów o błędach i ostrzeżeń. Domyślnie jest również wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą 2>.

15) Wyjaśnij koncepcję instrukcji warunkowych w skryptach powłoki.

Instrukcje warunkowe w skryptach powłoki pozwalają nam podejmować decyzje i kontrolować przebieg naszego scenariusza w oparciu o określone warunki. Umożliwiają one naszemu skryptowi wykonywanie różnych zestawów poleceń w zależności od tego, czy dany warunek jest prawdziwy, czy fałszywy. Podstawowymi instrukcjami warunkowymi w skryptach powłoki są instrukcja if, instrukcja elif (opcjonalna) i instrukcja else (opcjonalna).

Oto podstawowa struktura instrukcji warunkowej w skrypcie powłoki:

jeśli [warunek]; Następnie
# Polecenia do wykonania, jeśli warunek jest prawdziwy
elif [inny_warunek]; Następnie
# Polecenia do wykonania, jeśli inny_warunek jest prawdziwy (opcjonalnie)
w przeciwnym razie
# Polecenia do wykonania, jeśli żaden z warunków nie jest spełniony (opcjonalnie)
Być

Wyjaśnienie:

  • [warunek] = Polecenie, które ocenia warunek i zwraca prawdziwy (0) lub fałszywy (niezerowy) status wyjścia.
  • then = Jest to słowo kluczowe wskazujące, że następujące po nim polecenia zostaną wykonane, jeśli warunek ma wartość true.
  • elif = (skrót od else if) Jest to sekcja, która pozwala nam określić dodatkowe warunki do sprawdzenia.
  • else = jest to sekcja zawierająca polecenia, które zostaną wykonane, jeśli żaden z warunków nie zostanie spełniony.
  • fi = Jest to słowo kluczowe oznaczające koniec bloku warunkowego.

16) Jak odczytać linie z pliku w skrypcie powłoki?

Do czytaj linie z pliku w skrypcie powłoki, możemy użyć różnych metod, ale jednym z powszechnych podejść jest użycie pętli while w połączeniu z poleceniem read. Oto jak możemy to zrobić:

#!/bin/bash
plik=/home/jayeshkumar/jayesh.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
podczas gdy IFS= czytaj -r linia; Do
echo Odczytana linia: $line
# Dodaj tutaj logikę przetwarzania
gotowe <$plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=/home/jayeshkumar/jayesh.txt: Ta linia definiuje plik zmiennych i przypisuje pełną ścieżkę do pliku jayesh.txt w katalogu /home/jayeshkumar. Zmień tę ścieżkę, aby odpowiadała rzeczywistej ścieżce pliku, który chcesz przeczytać.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Sprawdza, czy plik określony przez zmienną $file istnieje. Flaga -e sprawdza istnienie pliku.
  4. podczas gdy IFS= czytaj -r linia; do: Ta linia inicjuje pętlę while, która odczytuje linie z pliku.
    • IFS=: IFS (wewnętrzny separator pól) jest ustawiony na pustą wartość, aby zachować spacje początkowe i końcowe.
    • read -r line: odczytuje bieżącą linię z pliku i zapisuje ją w linii zmiennej.
  5. echo Odczyt linii: $line: Ta linia drukuje zawartość linii, która została odczytana z pliku. Zmienna $line zawiera zawartość bieżącej linii.
  6. # Dodaj tutaj logikę przetwarzania: To jest komentarz zastępczy, w którym możesz dodać własną logikę przetwarzania każdej linii. Na przykład możesz przeanalizować wiersz, wyodrębnić informacje lub wykonać określone działania w oparciu o treść.
  7. gotowe <$plik: Oznacza to koniec pętli while. Plik < $przekierowuje zawartość pliku do odczytu przez pętlę.
  8. else: Jeśli plik nie istnieje (warunek w instrukcji if jest fałszywy), skrypt wykonuje kod z gałęzi else.
  9. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że nie znaleziono określonego pliku.
  10. fi: Ta linia oznacza koniec instrukcji if.
odczytanie pliku

odczytanie pliku

Tutaj użyliśmy ` pw ` polecenie, aby uzyskać ścieżkę bieżącego katalogu.

17) Napisz w skrypcie powłoki funkcję obliczającą silnię podanej liczby.

Oto skryptobliczyć silniędanego numeru.

#!/bin/bash
# Zdefiniuj funkcję do obliczenia silni
oblicz_czynnik() {
liczba = 1 USD
fakt=1
for ((i=1; i<=num; i++)); Do
fakt=$((fakt * i))
zrobione
powtórz fakt
}
# Poproś użytkownika o wprowadzenie numeru
echo Wpisz liczbę:
przeczytaj numer_wejściowy
# Wywołaj funkcjękalkuluj_czynnikową z numerem wejściowym
Factorial_result=$(oblicz_czynnik $input_num)
# Wyświetl wynik silni
echo Silnia wartości $input_num to: $factorial_result

Wyjaśnienie:

  1. Skrypt zaczyna się od linii #!/bin/bash określającej interpreter.
  2. call_factorial() jest zdefiniowana jako funkcja. Przyjmuje jeden argument, num, który jest liczbą, dla której należy obliczyć silnię.
  3. Wewnątrz funkcji fakt jest inicjowany na 1. Ta zmienna będzie przechowywać wynik silni.
  4. Pętla for iteruje od 1 do podanej liczby (num). W każdej iteracji mnoży bieżącą wartość faktu przez indeks pętli i.
  5. Po zakończeniu pętli zmienna faktu zawiera obliczoną silnię.
  6. Skrypt monituje użytkownika o wprowadzenie liczby za pomocą funkcji read.
  7. Funkcjakalkuluj_czynnik jest wywoływana z liczbą podaną przez użytkownika, a wynik jest zapisywany w zmiennejfactorial_result.
  8. Na koniec skrypt wyświetla obliczony wynik silni.
Silnia

Silnia

18) Jak radzisz sobie z sygnałami takimi jak Ctrl+C w skrypcie powłoki?

W skrypcie powłoki możesz obsługiwać sygnały takie jak Ctrl+C (znane również jako SIGINT) za pomocą polecenia trap. Ctrl+C generuje sygnał SIGINT, gdy użytkownik go naciśnie, aby przerwać działający skrypt lub program. Używając polecenia trap, możesz określić działania, które mają zostać podjęte po odebraniu określonego sygnału. Oto jak obsługujesz sygnały takie jak Ctrl+C w skrypcie powłoki:

#!/bin/bash
posprzątać() {
echo Skrypt przerwany. Wykonywanie czyszczenia…
# Dodaj tutaj swoje działania czyszczące
wyjście 1
}
# Ustaw pułapkę, aby wywołać funkcję czyszczenia po odebraniu Ctrl+C (SIGINT).
czyszczenie pułapek SIGINT
# Reszta skryptu
echo Bieganie…
spać 10
echo Zakończono.

Obsługa sygnałów jest ważna, aby skrypty były niezawodne i sprawnie obsługiwały nieoczekiwane zakłócenia. Możesz dostosować funkcję czyszczenia do swoich konkretnych potrzeb, takich jak zamykanie plików, zatrzymywanie procesów lub rejestrowanie informacji przed zakończeniem skryptu.

Wyjaśnienie:

  1. #!/bin/bash: Ta linia określa interpreter, który będzie używany do uruchamiania skryptu.
  2. cleanup() { … }: Definiuje funkcję o nazwie sprzątanie. Wewnątrz tej funkcji możesz uwzględnić wszelkie akcje, które należy wykonać w przypadku przerwania skryptu, takie jak zamknięcie plików, zwolnienie zasobów lub wykonanie innych zadań czyszczących.
  3. czyszczenie pułapek SIGINT: Polecenie pułapki służy do skonfigurowania procedury obsługi sygnału. W tym przypadku określa, że ​​po odebraniu sygnału SIGINT (Ctrl+C) powinna zostać wykonana funkcja czyszcząca.
  4. echo Działa…, śpi 10, echo Zakończono.: To tylko przykładowe polecenia symulujące wykonanie skryptu.

446

19) Utwórz skrypt, który sprawdza i usuwa zduplikowane linie w pliku tekstowym.

Oto nasz skrypt linuksowy, w którym usuniemy zduplikowane linie z pliku tekstowego.

#!/bin/bash
plik_wejściowy=plik wejściowy.txt
plik_wyjściowy=plik wyjściowy.txt
sortuj $plik_wejściowy | uniq> $plik_wyjściowy
echo Pomyślnie usunięto zduplikowane linie.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), który wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. Zmienna input_file jest ustawiona na nazwę pliku wejściowego zawierającego zduplikowane linie (zmień tę nazwę na rzeczywistą nazwę pliku wejściowego).
  3. Zmienna plik_wyjściowy jest ustawiona na nazwę pliku wyjściowego, z którego zostaną usunięte duplikaty (zmień tę nazwę na żądaną nazwę pliku wyjściowego).
  4. Skrypt używa polecenia sort do sortowania wierszy w pliku wejściowym. Sortowanie linii zapewnia zgrupowanie zduplikowanych linii.
  5. Posortowane linie są następnie przepuszczane przez polecenie uniq, które usuwa kolejne zduplikowane linie. Dane wyjściowe tego procesu są przekierowywane do pliku wyjściowego.
  6. Po usunięciu duplikatów skrypt wyświetla komunikat o powodzeniu.
usuwanie zduplikowanych linii

usuwanie zduplikowanych linii

Tutaj używamy ` kot `, aby wyświetlić tekst znajdujący się w pliku tekstowym.

20) Napisz skrypt generujący bezpieczne losowe hasło.

Oto nasz skrypt generujący bezpieczne losowe hasło.

#!/bin/bash
# Funkcja generowania losowego hasła
wygeneruj_hasło() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Wywołaj funkcję i zapisz wygenerowane hasło
hasło=$(wygeneruj_hasło)
echo Wygenerowane hasło: $password

Uwaga: Użytkownik może odpowiednio zmienić długość hasła, zastępując cyfrę `12`.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Funkcja generate_password służy do generowania losowego hasła. Oto jak to działa:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 dzieli przefiltrowane losowe dane na linie o szerokości 12 znaków każda.
    • head -n 1 wybiera pierwszą linię, skutecznie dając nam losową sekwencję znaków o długości 12.
  3. Do zmiennej hasła przypisywany jest wynik wywołania funkcji generate_password.
  4. Na koniec wygenerowane hasło jest wyświetlane za pomocą echa.

448

21) Napisz skrypt powłoki, który obliczy całkowity rozmiar wszystkich plików w katalogu.

Oto skrypt powłoki obliczający całkowity rozmiar wszystkich plików w katalogu.

#!/bin/bash
katalog=/ścieżka/do/twojego/katalogu
total_size=$(du -csh $katalog | grep total | awk „{print $1}”)
echo Całkowity rozmiar plików w katalogu $: $total_size

Wyjaśnienie:

  1. Skrypt zaczyna się od znaku #!/bin/bash shebang, wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Zmienna katalogu jest ustawiona na ścieżkę katalogu, dla którego chcesz obliczyć całkowity rozmiar pliku. Zastąp /path/to/your/directory rzeczywistą ścieżką.
  3. Polecenie du służy do szacowania wykorzystania przestrzeni plików. Stosowane opcje to:
    • -c: Wygeneruj sumę całkowitą.
    • -s: Wyświetla tylko całkowity rozmiar określonego katalogu.
    • -h: Rozmiar wydruku w formacie czytelnym dla człowieka (np. KB, MB, GB).
  4. Dane wyjściowe du są przesyłane do grep total w celu odfiltrowania linii zawierającej całkowity rozmiar.
  5. awk „{print $1}” służy do wyodrębnienia pierwszego pola (całkowitego rozmiaru) z linii.
  6. Obliczony całkowity rozmiar jest przechowywany w zmiennej total_size.
  7. Na koniec skrypt wyświetla całkowity rozmiar za pomocą echo.
Całkowity rozmiar plików

Całkowity rozmiar plików

Tutaj użyliśmy ` pw ` polecenie, aby zobaczyć bieżącą ścieżkę katalogu.

22) Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki.

Funkcja `jeśli`Staiment Oświadczenie „elif”.
Zamiar Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki. Zapewnia alternatywne warunki umożliwiające sprawdzenie, czy początkowy warunek if jest fałszywy.
stosowanie Używany do warunku początkowego. Używane po początkowym warunku if w celu sprawdzenia dodatkowych warunków.
liczba bloków Może mieć tylko jeden, jeśli jest blokowany. Może mieć wiele bloków elif, ale tylko jeden blok else (opcjonalnie).
Wykonanie Wykonuje blok kodu powiązany z instrukcją if, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, wykonywany jest blok else (jeśli występuje) (opcjonalnie). Sprawdza każdy warunek elif w kolejności. Jeśli jeden warunek elif jest prawdziwy, wykonywany jest odpowiedni blok kodu, a skrypt kończy cały blok warunkowy. Jeśli żaden z warunków elif nie jest spełniony, wykonywany jest blok else (jeśli występuje).
Struktury zagnieżdżone Można je zagnieżdżać w innych blokach if, elif lub else. Nie można go zagnieżdżać w innym bloku elif, ale można go użyć w bloku if lub else.

Rozumiemy to na przykładzie.

#!/bin/bash
liczba=5
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
w przeciwnym razie
echo $liczba nie jest większa niż 10
Być
Echo ---
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
elif [$liczba -równ. 10]; Następnie
echo $liczba jest równa 10
w przeciwnym razie
echo $liczba jest mniejsza niż 10
Być

Wyjaśnienie:

W tym przykładzie pierwszy blok if sprawdza, czy liczba jest większa niż 10. Jeśli nie, wypisuje komunikat wskazujący, że liczba nie jest większa niż 10. Drugi blok z instrukcjami elif sprawdza po kolei wiele warunków, aż jeden z nich będzie prawdziwy. W tym przypadku, ponieważ wartość liczby wynosi 5, wynikiem będzie:

różnica if_elif

różnica if_elif

23) Jak używać pętli while do wielokrotnego wykonywania poleceń?

Pętla while jest używana w skryptach powłoki do wielokrotnego wykonywania zestawu poleceń, o ile określony warunek jest spełniony. Pętla kontynuuje wykonywanie poleceń, aż warunek stanie się fałszywy.

Oto podstawowa składnia pętli while:

podczas gdy [warunek]; Do
# Polecenia do wykonania
zrobione

Wyjaśnienie:

  1. Pętla „while” zaczyna się od słowa kluczowego „while”, po którym następuje warunek ujęty w nawiasy kwadratowe „[ ]”.
  2. Ciało pętli zawierające polecenia do wykonania jest ujęte w słowa kluczowe „do” i „done”.
  3. Pętla najpierw sprawdza warunek. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w treści pętli. Po wykonaniu treści pętli warunek jest ponownie sprawdzany i proces jest powtarzany, aż warunek stanie się fałszywy.

Przykład: Jeśli chcemy wydrukować liczby od 1 do 5

#!/bin/bash
licznik=1
podczas gdy [ $licznik -le 5 ]; Do
echo Numer: $licznik
licznik=$((licznik + 1))
zrobione

Wyjaśnienie:

  • Zmienna licznika jest ustawiona na 1.
  • Pętla while sprawdza, czy wartość licznika jest mniejsza lub równa 5. Dopóki ten warunek jest spełniony, pętla kontynuuje wykonywanie.
  • Wewnątrz pętli bieżąca wartość licznika jest drukowana za pomocą echo.
  • Licznik jest zwiększany o 1 za pomocą wyrażenia $((licznik + 1)).
pętla while

pętla while

24) Utwórz skrypt powłoki, który znajdzie i wyświetli listę wszystkich pustych plików w katalogu.

Skrypt powłoki, którego możesz użyć do znalezienia i wyświetlenia wszystkich pustych plików w katalogu za pomocą poleceń `find` i `stat`:

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie: $0
wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie
echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być
echo Puste pliki w katalogu $:
znajdź katalog $ -typ f -pusty

Wyjaśnienie:

  1. ` #!/bin/bash `: Nazywa się to shebang i mówi systemowi operacyjnemu, aby użył powłoki Bash do interpretacji i wykonania skryptu.
  2. ` katalog = 1 $ ″ `: Ta linia przypisuje pierwszy argument wiersza poleceń (oznaczony jako $1) do zmiennej ` informator `.
  3. ` if [ -z $katalog ]; Następnie `: Ta linia rozpoczyna instrukcję if, która sprawdza, czy ` informator ` zmienna jest pusta (-z sprawdza pusty ciąg znaków).
  4. ` echo Użycie: $0 `: Jeśli katalog jest pusty, ta linia wyświetla komunikat o użyciu, gdzie ` 0 dolarów ` oznacza nazwę skryptu.
  5. ` wyjście 1 `: Ta linia kończy skrypt z kodem zakończenia ` 1 `, wskazując błąd.
  6. ` Być `: Ta linia oznacza koniec ` Jeśli ` oświadczenie.
  7. ` Jeśli [ ! -d $katalog]; Następnie `: Spowoduje to uruchomienie kolejnej instrukcji if w celu sprawdzenia, czy podany katalog istnieje (` -D ` testuje katalog).
  8. ` echo Błąd: „katalog $” nie jest prawidłowym katalogiem. `: Jeśli podany katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. ` wyjście 1 `: Kończy skrypt z kodem zakończenia ` 1 `.
  10. ` Być `: Oznacza koniec drugiego ` jeśli` oświadczenie.
  11. ` echo Puste pliki w katalogu $: `: Jeśli do tej pory wszystko było w porządku, w tej linii zostanie wyświetlony komunikat wskazujący, że skrypt wyświetli listę pustych plików w określonym katalogu.
  12. ` znajdź katalog $ -typ f -pusty `: Ta linia używa ` znajdować ` polecenie wyszukiwania pustych plików (` -pusty `) typu zwykłe pliki (` -wpisz f `) w określonym katalogu. Następnie wyświetla listę tych pustych plików.
Znajdowanie pustych plików

Znajdowanie pustych plików

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/

25) Jaki jest cel polecenia read w skryptach powłoki?

Polecenie read w skryptach powłoki pozwala skryptowi poprosić Cię o informacje. To tak, jakby komputer zadał Ci pytanie i czekał na Twoją odpowiedź. Jest to przydatne w przypadku skryptów, które wymagają wpisania czegoś lub gdy skrypt musi pracować z informacjami z plików. Polecenie read pomaga skryptowi zatrzymać się i poczekać na to, co wpiszesz, a następnie może wykorzystać te informacje do wykonania dalszych czynności w skrypcie.

Składnia polecenia odczytu:

read variable_name>

Przykład : Jeśli chcemy przyjąć nazwę jako dane wejściowe od użytkownika, aby ją wydrukować.

#!/bin/bash
echo Proszę podać swoje imię:
przeczytaj imię
echo Witaj, $imie!

453

czytaj imię

Podsumowując, polecenie read służy do przechwytywania danych wprowadzanych przez użytkownika lub danych z plików w skryptach powłoki, dzięki czemu skrypty są bardziej interaktywne i wszechstronne.

26) Napisz skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

Oto skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie: $0
wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie

echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być

katalog $ CD || wyjście 1

dla pliku w *; Do
jeśli [ -f $plik ]; Następnie
nowa nazwa=$(echo $plik | tr „A-Z” „a-z”)
[ $plik != $nowa nazwa ] && mv $plik $nowa nazwa
Być
zrobione

Wyjaśnienie:

  1. #!/bin/bash : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. katalog = 1 $ ″ : Ta linia przypisuje pierwszy argument wiersza poleceń do katalogu zmiennych.
  3. if [ -z $katalog ]; Następnie : Ta linia sprawdza, czy zmienna katalogu jest pusta (podczas uruchamiania skryptu nie podano żadnego argumentu).
  4. echo Użycie: $0 : Jeśli katalog jest pusty, w tej linii zostanie wydrukowana informacja o użyciu zawierająca nazwę skryptu ($0).
  5. wyjście 1 : Ta linia kończy skrypt z kodem zakończenia 1, wskazującym, że wystąpił błąd.
  6. F i: Oznacza to koniec pierwszej instrukcji if.
  7. Jeśli [ ! -d $katalog]; Następnie : Ta linia sprawdza, czy podany katalog nie istnieje (-d sprawdza katalog).
  8. echo Błąd: „katalog $” nie jest prawidłowym katalogiem. : Jeśli określony katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. wyjście 1 : Opuszcza skrypt z kodem wyjścia 1.
  10. Być : Oznacza koniec drugiej instrukcji if.
  11. katalog $ CD || wyjście 1 : Zmienia bieżący katalog roboczy na określony katalog. Jeśli zmiana katalogu nie powiedzie się (np. katalog nieistniejący), skrypt zakończy działanie z kodem błędu.
  12. dla pliku w *; Do: I dla pliku w *; Do: inicjuje pętlę, która iteruje po wszystkich elementach w bieżącym katalogu (* pasuje do wszystkich nazw plików).
  13. jeśli [ -f $plik ]; Następnie : Sprawdza, czy bieżący element iteracji pętli jest zwykłym plikiem (-f sprawdza zwykły plik).
  14. nowa nazwa=$(echo $plik | tr „A-Z” „a-z”) : Konwertuje bieżącą nazwę pliku ($file) na małe litery za pomocą polecenia tr i zapisuje wynik w zmiennej newname.
  15. [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa : porównuje oryginalną nazwę pliku z nową nazwą pliku zawierającą małe litery. Jeśli są różne, zmienia nazwę pliku za pomocą polecenia mv.
  16. Być : Oznacza koniec wewnętrznej instrukcji if.
  17. zrobione : Oznacza koniec pętli.

454

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/test

27) Jak można używać operacji arytmetycznych w skrypcie powłoki?

Operacje arytmetyczne można wykonywać w skrypcie powłoki przy użyciu różnych wbudowanych metod. Powłoka zapewnia mechanizmy prostych obliczeń arytmetycznych przy użyciu rozwinięcia arytmetycznego, takie jak:

  1. Rozszerzenie arytmetyczne ($((…)))
  2. Używanie polecenia wyraż
  3. Używanie polecenia let

Oto nasz skrypt powłoki wyjaśniający wszystkie trzy metody operacji arytmetycznych.

#!/bin/bash
liczba1=10
liczba2=5

#Rozwinięcie arytmetyczne ($((…)))

wynik=$((liczba1 + liczba2))
echo Suma: $wynik

#Używanie polecenia wyraż

suma=$(wyrażenie $num1 + $num2)
echo Suma: $suma

#Używanie polecenia let

niech suma = liczba1 + liczba2
echo Suma: $suma

Wyjaśnienie:

  1. `#!/bin/bash` : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. `liczba1=10` i ` liczba2=5` : Linie te przypisują wartości 10 i 5 zmiennym ` numer1 ` i ` liczba2 `, odpowiednio.
  3. `#Rozwinięcie arytmetyczne ($((…)))` : To jest komentarz wskazujący początek sekcji demonstrującej rozwinięcie arytmetyczne.
  4. `wynik=$((liczba1 + liczba2))` : W tej linii zastosowano rozwinięcie arytmetyczne do obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` wynik ` zmienna.
  5. `echo Suma: $wynik` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` wynik ` zmienna.
  6. `#Używanie polecenia wyrażenia` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` wyr ` polecenie wykonywania operacji arytmetycznych.
  7. `suma=$(wyrażenie $num1 + $num2)` : Ta linia używa ` wyr ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` suma ` zmienna. Należy pamiętać, że ` wyr Polecenie ` wymaga spacji wokół operatorów.
  8. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
  9. `#Używanie polecenia let` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` pozwalać ` polecenie wykonywania operacji arytmetycznych.
  10. `niech suma = liczba1 + liczba2″` : Ta linia używa ` pozwalać ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przypisuje wynik do ` suma ` zmienna. ` pozwalać Polecenie ` nie wymaga spacji wokół operatorów.
  11. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
arytmetyka

arytmetyka

28) Utwórz skrypt sprawdzający, czy host sieciowy jest osiągalny.

Oto prosty skrypt powłoki, który używa polecenia ping do sprawdzenia, czy host sieciowy jest osiągalny:

#!/bin/bash
gospodarz = 1 $ ″
jeśli [ -z $host ]; Następnie
echo Użycie: $0
wyjście 1
Być
ping -c 4 $host

jeśli [$? -równ. 0]; Następnie
echo $host jest osiągalny.
w przeciwnym razie
echo $host jest nieosiągalny.
Być

Wyjaśnienie:

  1. Jako argument przyjmuje nazwę hosta lub adres IP i sprawdza, czy argument został podany.
  2. Jeśli nie podano żadnego argumentu, wyświetla komunikat o użyciu i kończy działanie.
  3. Używa polecenia ping z opcją -c 4 do wysyłania czterech żądań echa ICMP do określonego hosta.
  4. Po uruchomieniu polecenia ping sprawdza status wyjścia ($?). Jeśli status wyjścia wynosi 0, oznacza to, że host jest osiągalny i skrypt wyświetla komunikat o powodzeniu. W przeciwnym razie drukuje komunikat o błędzie.

456

Notatka : Musimy podać nazwę hosta jako argument podczas uruchamiania skryptu. Tutaj użyliśmy google.com

29) Napisz skrypt powłoki, aby znaleźć największy element w tablicy:

Oto skrypt powłoki umożliwiający znalezienie największego elementu w tablicy.

#!/bin/bash
# Zadeklaruj tablicę
tablica=(3 56 24 89 67)

# Zainicjuj zmienną, aby przechowywać maksymalną wartość, zaczynając od pierwszego elementu

max=${tablica[0]}

# Iteruj po tablicy

dla liczby w ${tablica[@]}; Do

# Porównaj każdy element z bieżącym maksimum

jeśli ((liczba> maks.)); Następnie
maks.=$liczba
Być
zrobione

# Wydrukuj wartość maksymalną

echo Maksymalny element tablicy to: $max

Wyjaśnienie:

  1. ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. ` tablica=(3 56 24 89 67) `: Tablica jest zadeklarowana i zainicjowana wartościami.
  3. ` max=${tablica[0]} `: `max` jest inicjalizowane pierwszym elementem tablicy.
  4. ` dla liczby w ${tablica[@]}; Do `: Pętla „for” służy do iteracji po elementach tablicy.
  5. ` jeśli ((liczba> maks.)); Następnie `: Instrukcja `if` sprawdza, czy bieżący element `num` jest większy od bieżącego maksimum `max`.
  6. ` max=$num`: Jeśli`num ` jest większe niż `max`, `max` jest aktualizowane o wartość num.
  7. ` zrobione `: Pętla „for” jest zamknięta.
  8. ` echo Maksymalny element tablicy to: $max `: Na koniec skrypt wypisuje maksymalną wartość znalezioną w tablicy.
461

największa liczba

30) Napisz skrypt obliczający sumę elementów w tablicy.

#!/bin/bash

# Zadeklaruj tablicę

tablica=(1 65 22 19 94)

# Zainicjuj zmienną, aby zapisać sumę

suma=0

# Iteruj po tablicy i dodaj każdy element do sumy

dla liczby w ${tablica[@]}; Do
rano=$((rano + rano))
zrobione

# Wydrukuj sumę

echo Suma elementów tablicy wynosi: $sum

Wyjaśnienie:

` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.

` tablica=(1 65 22 19 94) `: Tablica jest zadeklarowana i zainicjowana wartościami.

` suma=0 `:` suma ` jest inicjalizowane na zero, aby przechowywać sumę elementów.

` dla liczby w ${tablica[@]}; Do `: A` Do Pętla ` służy do iteracji po elementach tablicy.

` rano=$((rano + rano)) `: Wewnątrz pętli każdy element ` na jednego ` dodaje się do ` suma ` zmienna.

` zrobione `: ` Do ` pętla jest zamknięta.

`echo Suma elementów tablicy wynosi: $sum`: Na koniec skrypt wypisuje sumę wszystkich elementów tablicy.

462

Suma elementów

Dowiedz się więcej o skryptach powłoki

Wniosek

Wszyscy maniacy wiemy, że skrypt powłoki jest bardzo przydatny w zwiększaniu produktywności pracy, a także oszczędzaniu czasu. Tak więc w tym artykule omówiliśmy 30 bardzo przydatnych i najbardziej oszukańczych przykładów skryptów powłoki . Mamy nadzieję, że ten kompletny przewodnik na temat przykładowych skryptów powłoki pomoże Ci zrozumieć wszystko na temat skryptów powłoki.




wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie

echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być

katalog $ CD || wyjście 1

dla pliku w *; Do
jeśli [ -f $plik ]; Następnie
nowa nazwa=$(echo $plik | tr „A-Z” „a-z”)
[ $plik != $nowa nazwa ] && mv $plik $nowa nazwa
Być
zrobione

Wyjaśnienie:

  1. #!/bin/bash : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. katalog = 1 $ ″ : Ta linia przypisuje pierwszy argument wiersza poleceń do katalogu zmiennych.
  3. if [ -z $katalog ]; Następnie : Ta linia sprawdza, czy zmienna katalogu jest pusta (podczas uruchamiania skryptu nie podano żadnego argumentu).
  4. echo Użycie:

    W przypadku wszystkich dystrybucji Linuksa skrypt powłoki jest jak magiczna różdżka, która automatyzuje proces, oszczędza czas użytkowników i zwiększa produktywność. Ten samouczek dotyczący skryptowania wprowadzi Cię w ponad 25 przykładów tworzenia skryptów.

    Zanim jednak przejdziemy do tematu skrypty powłoki przykłady, przyjrzyjmy się skryptowi powłoki i rzeczywistym przypadkom użycia skryptów powłoki.

    Co to jest skrypt powłoki?

    Cóż, skorupa jest interfejs wiersza polecenia ( interpreter wiersza poleceń ), który działa w oknie tekstowym, w którym użytkownicy mogą zarządzać poleceniami powłoki i je wykonywać. Z drugiej strony proces pisania zestawu poleceń do wykonania w systemie Linux. Plik zawierający takie instrukcje nazywany jest skryptem bash.

    Zastosowania skryptów powłoki

    Poniżej znajduje się kilka typowych zastosowań skryptu powłoki:

    • Automatyzacja zadań – Można go używać do automatyzacji powtarzalnych zadań, takich jak regularne tworzenie kopii zapasowych i zadania instalacji oprogramowania.
    • Dostosowywanie - Można używać skryptów powłoki do projektowania środowiska wiersza poleceń i łatwego wykonywania zadań zgodnie z potrzebami.
    • Zarządzanie plikami - Skryptów powłoki można również używać do zarządzania plikami i katalogami oraz manipulowania nimi, na przykład przenoszenia, kopiowania, zmiany nazwy lub usuwania plików.

    Przykłady skryptów powłoki w systemie Linux

    1) Co oznacza shebang (#!) na początku skryptu powłoki?

    The shebang (#!) na początku skryptu wskazuje interpreter, który powinien zostać użyty do wykonania skryptu. Mówi systemowi, która powłoka lub interpreter powinien interpretować polecenia skryptu.

    Na przykład: Załóżmy, że mamy skrypt o nazwie mójscript.sh napisane w powłoce Bash:

    szulernia

    szulernia

    W tym przykładzie:

    • Znak #!/bin/bash na początku skryptu wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    • Polecenia echo służą do drukowania komunikatów na terminalu.

    2) Jak uruchomić skrypt powłoki z wiersza poleceń?

    Aby uruchomić skrypt powłoki z wiersza poleceń, musimy wykonać następujące kroki:

    • Upewnij się, że plik skryptu ma uprawnienia do wykonywania, używając polecenie chmod :
    chmod +x myscript.sh>
    • Wykonaj skrypt, używając jego nazwy pliku:
    ./myscript.sh>

    Tutaj musisz wymienić myscript.sh z twoją nazwą skryptu.

    3) Napisz skrypt powłoki, który wypisuje plik techcodeview.com na terminalu.

    Utwórz nazwę skryptu `myscript.sh` (używamy ` ponieważ ` edytor, możesz wybrać dowolny edytor)

    vim myscript.sh>

    #!/bin/bash
    # Ten skrypt drukuje plik techcodeview.com na terminalu
    echo techcodeview.com

    Nazwa wydruku

    Nazwa wydruku

    Sprawiamy, że nasz skrypt jest wykonywalny, używając `chmod +x`, a następnie wykonujemy go za pomocą `./myscipt.sh` i uzyskujemy żądane wyjście techcodeview.com.

    4) Wyjaśnij cel polecenia echo w skryptach powłoki.

    The polecenie echa służy do wyświetlania tekstu lub zmiennych na terminalu. Jest powszechnie używany do drukowania komunikatów, wartości zmiennych i generowania wyników programu.

    434

    polecenie echa

    W tym przykładzie wykonaliśmy `echo` bezpośrednio na terminalu, ponieważ działa to tak samo w skrypcie powłoki.

    5) Jak przypisać wartość do zmiennej w skrypcie powłoki?

    Zmiennym przypisuje się wartości za pomocą operatora przypisania =.

    Na przykład:

    #!/bin/bash
    # Przypisywanie wartości do zmiennej
    imię = Jayesh
    wiek=21
    echo $imię $wiek

    Wyjaśnienie:

    • Zmiennej nazwie przypisano wartość Jayesh.
    • Zmiennej wiek przypisano wartość 21.
    • echo służy do drukowania, a `$nazwa` `$wiek` służy do wywoływania wartości przechowywanej w zmiennych.

    435

    6) Napisz skrypt powłoki, który jako dane wejściowe pobiera nazwę użytkownika i wita go.

    Utwórz skrypt o nazwie `example.sh`.

    #!/bin/bash
    # Zapytaj użytkownika o jego imię i nazwisko
    echo Jak masz na imię?
    przeczytaj imię
    # Powitaj użytkownika
    echo Witaj, $imie! Miło mi cię poznać.

    Wyjaśnienie:

    • #!/bin/bash: To jest linia Shebang. Mówi systemowi, aby użył interpretera Bash do wykonania skryptu.
    • # Zapytaj użytkownika o jego imię i nazwisko: To jest komentarz. Zapewnia kontekst dotyczący nadchodzącego kodu. Komentarze są ignorowane przez tłumacza.
    • echo Jak się nazywasz?: Polecenie echo służy do wyświetlania tekstu w cudzysłowie na terminalu.
    • read name: Polecenie read czeka, aż użytkownik wprowadzi tekst i zapisuje go w nazwie zmiennej.
    • echo Witaj, $imię! Miło cię poznać.: Ta linia używa polecenia echo do wydrukowania wiadomości powitalnej zawierającej wartość zmiennej name, która została pobrana z danych wprowadzonych przez użytkownika.

    436

    7) Jak dodać komentarze do skryptu powłoki?

    Komentarze w skryptach powłoki służą do zapewnienia wyjaśnień lub kontekstu kodu. Są one ignorowane przez tłumacza i są przeznaczone wyłącznie dla ludzi czytających scenariusz. Możesz dodawać komentarze, używając symbolu #.

    #!/bin/bash
    # To jest komentarz wyjaśniający cel skryptu
    powtórz GFG

    8) Utwórz skrypt powłoki, który sprawdza, czy w bieżącym katalogu istnieje plik.

    Oto skrypt sprawdzający, czy w bieżącym katalogu istnieje plik o nazwie example.txt:

    #!/bin/bash
    plik=przykład.txt
    # Sprawdź, czy plik istnieje
    if [ -e $plik ]; Następnie
    echo Plik istnieje: $plik
    w przeciwnym razie
    echo Nie znaleziono pliku: $file
    Być

    Wyjaśnienie:

    1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
    2. file=example.txt: Ta linia definiuje plik zmiennych i przypisuje mu wartość example.txt. Możesz zastąpić tę nazwę plikiem, który chcesz sprawdzić.
    3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Warunek [ -e $plik ] sprawdza, czy plik określony przez wartość zmiennej pliku istnieje. Flaga -e służy do sprawdzania istnienia pliku.
    4. echo Plik istnieje: $plik: Jeśli warunek jest spełniony (tj. plik istnieje), w tej linii zostanie wyświetlony komunikat wskazujący, że plik istnieje, wraz z nazwą pliku.
    5. else: Jeśli warunek jest fałszywy (tzn. plik nie istnieje), skrypt wykonuje kod z gałęzi else.
    6. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że określony plik nie został znaleziony, wraz z jego nazwą.
    7. fi: Ta linia oznacza koniec instrukcji if.
    Znalezienie pliku

    Znalezienie pliku

    9) Jaka jest różnica pomiędzy pojedynczymi cudzysłowami („) i podwójnymi cudzysłowami () w skryptach powłoki?

    Pojedyncze cudzysłowy („) i podwójne cudzysłowy () służą do umieszczania ciągów znaków w skryptach powłoki, ale zachowują się inaczej:

    • Pojedyncze cudzysłowy: wszystko pomiędzy pojedynczymi cudzysłowami jest traktowane jako ciąg znaków. Nazwy zmiennych i większość znaków specjalnych nie są rozwijane.
    • Podwójne cudzysłowy: Zmienne i niektóre znaki specjalne w podwójnych cudzysłowach są rozwijane. Treść podlega podstawieniu zmiennych i podstawieniu poleceń.

    #!/bin/bash

    abcd=Witam
    echo „$abcd” # Dane wyjściowe: $abcd
    echo $abcd # Wynik: Witam

    10) Jak można używać argumentów wiersza poleceń w skrypcie powłoki?

    Argumenty wiersza poleceń to wartości dostarczane do skryptu podczas jego wykonywania. Dostęp do nich można uzyskać w skrypcie za pomocą specjalnych zmiennych, takich jak 1 $, 2 $ itd., gdzie 1 $ reprezentuje pierwszy argument, 2 $ reprezentuje drugi argument i tak dalej.

    Na przykład: Jeśli nasza nazwa skryptu w `example.sh`

    #!/bin/bash

    echo Nazwa skryptu: $0
    echo Pierwszy argument: $1
    echo Drugi argument: 2 $

    Jeśli uruchomimy skrypt z `.example.sh hello_1 hello_2`, wyświetli się:

    argumenty cli

    argumenty cli

    11) Jak używać pętli for do iteracji po liście wartości?

    Utwórz nazwę skryptu `example.sh`.

    #!/bin/bash

    owoce=(jabłko banan wiśnia data)
    dla owoców w ${fruits[@]}; Do
    echo Aktualny owoc: $owoc
    zrobione

    Wyjaśnienie:

    Linia `fruits=` tworzy tablicę o nazwie owoce zawierającą cztery elementy: jabłko, banan, wiśnia i data.

    • dla owoców w ${fruits[@]}; do: Ta linia rozpoczyna pętlę for. Oto znaczenie każdej części:
    • dla owoców: deklaruje zmienną pętli zwaną owocami. W każdej iteracji pętli Fruit będzie przechowywać wartość bieżącego elementu z tablicy Fruits.
    • ${fruits[@]}: To jest rozwinięcie tablicy, które pobiera wszystkie elementy z tablicy Fruits. Składnia ${…} gwarantuje, że każdy element będzie traktowany jako oddzielny element.
    • do: To słowo kluczowe oznacza początek treści pętli.
    • echo Bieżący owoc: $owoc: Wewnątrz pętli w tej linii używane jest polecenie echo do wyświetlenia bieżącej wartości zmiennej owocowej pętli. Wypisuje komunikat w rodzaju Bieżący owoc: jabłko dla każdego owocu w tablicy.
    • gotowe: To słowo kluczowe oznacza koniec treści pętli. Informuje skrypt, że pętla została zakończona.
    dla pętli

    dla pętli

    12) Napisz skrypt powłoki, który oblicza sumę liczb całkowitych od 1 do N za pomocą pętli.

    Utwórz nazwę skryptu `example.sh`.

    #!/bin/bash

    echo Podaj liczbę (N):
    przeczytaj N
    suma=0
    for (( i=1; i<=$N; i++ )); Do
    suma=$((suma + i))
    zrobione
    echo Suma liczb całkowitych od 1 do $N to: $sum

    Wyjaśnienie:
    Skrypt rozpoczyna się od prośby o wprowadzenie liczby (N) za pomocą polecenia read. Ta liczba określi, ile razy pętla zostanie uruchomiona.

    1. Suma zmiennej jest inicjowana na 0. Ta zmienna będzie śledzić sumę liczb całkowitych.
    2. Pętla for zaczyna się od for (( i=1; i<=$N; i++ )). Ta struktura pętli służy do powtarzania zestawu działań określoną liczbę razy, w tym przypadku od 1 do wartości N.
    3. Wewnątrz pętli dzieją się następujące rzeczy:
      • i=1 ustawia zmienną pętli i na 1 na początku każdej iteracji.
      • Warunek pętli i<=$N sprawdza, czy i jest nadal mniejsze lub równe podanej liczbie N.
      • Jeżeli warunek jest spełniony, wykonywane jest ciało pętli.
      • sum=$((suma + i)) oblicza nową wartość sumy, dodając do niej bieżącą wartość i. Spowoduje to dodanie liczb całkowitych od 1 do bieżącej wartości i.
    4. Po każdej iteracji i++ zwiększa wartość i o 1.
    5. Pętla działa dopóki warunek i<=$N nie stanie się fałszywy (kiedy i stanie się większe niż N).
    6. Po zakończeniu pętli skrypt wyświetla sumę liczb całkowitych od 1 do wprowadzonej liczby N.

    439

    13) Utwórz skrypt, który wyszukuje określone słowo w pliku i zlicza jego wystąpienia.

    Utwórz nazwę skryptu `word_count.sh`

    #!/bin/bash

    echo Wpisz szukane słowo:
    przeczytaj słowo_celowe
    echo Podaj nazwę pliku:
    przeczytaj nazwę pliku
    liczba=$(grep -o -w $słowo_docelowe $nazwa pliku | wc -l)
    echo Słowo „$target_word” pojawia się $count razy w „$filename”.

    Wyjaśnienie:

    • echo Wpisz słowo do wyszukania:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o wprowadzenie słowa, którego chce szukać w pliku.
    • read target_word: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie target_word.
    • echo Wpisz nazwę pliku:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o podanie nazwy pliku, który chce przeszukać.
    • read filename: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie filename.
    • count=$(grep -o -w $target_word $nazwa pliku | wc -l): Ta linia wykonuje główną pracę skryptu. Rozłóżmy to dalej:
      • grep -o -w $słowo_docelowe $nazwa pliku: Ta część polecenia wyszukuje wystąpienia słowa_docelowego w określonej nazwie pliku. Opcje -o i -w zapewniają, że zliczane będą tylko dopasowania całych słów.
      • |: To jest potok, który pobiera dane wyjściowe poprzedniego polecenia i wysyła je jako dane wejściowe do następnego polecenia.
      • wc -l: Ta część polecenia wykorzystuje polecenie wc do zliczenia liczby wierszy na wejściu. Opcja -l specjalnie zlicza linie.
      • Całe polecenie oblicza liczbę wystąpień słowa_docelowego w pliku i przypisuje tę liczbę do zmiennej coun

    441

    14) Wyjaśnij różnice pomiędzy standardowym wyjściem (stdout) i standardowym wyjściem błędów (stderr).

    Główna różnica między standardowym wyjściem (stdout) a standardowym błędem (stderr) jest następująca:

    • Standardowe wyjście (stdout): Jest to domyślny strumień wyjściowy, do którego trafiają zwykłe dane wyjściowe polecenia. Domyślnie jest wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą>.
    • Błąd standardowy (stderr): Jest to strumień wyjściowy komunikatów o błędach i ostrzeżeń. Domyślnie jest również wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą 2>.

    15) Wyjaśnij koncepcję instrukcji warunkowych w skryptach powłoki.

    Instrukcje warunkowe w skryptach powłoki pozwalają nam podejmować decyzje i kontrolować przebieg naszego scenariusza w oparciu o określone warunki. Umożliwiają one naszemu skryptowi wykonywanie różnych zestawów poleceń w zależności od tego, czy dany warunek jest prawdziwy, czy fałszywy. Podstawowymi instrukcjami warunkowymi w skryptach powłoki są instrukcja if, instrukcja elif (opcjonalna) i instrukcja else (opcjonalna).

    Oto podstawowa struktura instrukcji warunkowej w skrypcie powłoki:

    jeśli [warunek]; Następnie
    # Polecenia do wykonania, jeśli warunek jest prawdziwy
    elif [inny_warunek]; Następnie
    # Polecenia do wykonania, jeśli inny_warunek jest prawdziwy (opcjonalnie)
    w przeciwnym razie
    # Polecenia do wykonania, jeśli żaden z warunków nie jest spełniony (opcjonalnie)
    Być

    Wyjaśnienie:

    • [warunek] = Polecenie, które ocenia warunek i zwraca prawdziwy (0) lub fałszywy (niezerowy) status wyjścia.
    • then = Jest to słowo kluczowe wskazujące, że następujące po nim polecenia zostaną wykonane, jeśli warunek ma wartość true.
    • elif = (skrót od else if) Jest to sekcja, która pozwala nam określić dodatkowe warunki do sprawdzenia.
    • else = jest to sekcja zawierająca polecenia, które zostaną wykonane, jeśli żaden z warunków nie zostanie spełniony.
    • fi = Jest to słowo kluczowe oznaczające koniec bloku warunkowego.

    16) Jak odczytać linie z pliku w skrypcie powłoki?

    Do czytaj linie z pliku w skrypcie powłoki, możemy użyć różnych metod, ale jednym z powszechnych podejść jest użycie pętli while w połączeniu z poleceniem read. Oto jak możemy to zrobić:

    #!/bin/bash
    plik=/home/jayeshkumar/jayesh.txt
    # Sprawdź, czy plik istnieje
    if [ -e $plik ]; Następnie
    podczas gdy IFS= czytaj -r linia; Do
    echo Odczytana linia: $line
    # Dodaj tutaj logikę przetwarzania
    gotowe <$plik
    w przeciwnym razie
    echo Nie znaleziono pliku: $file
    Być

    Wyjaśnienie:

    1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
    2. file=/home/jayeshkumar/jayesh.txt: Ta linia definiuje plik zmiennych i przypisuje pełną ścieżkę do pliku jayesh.txt w katalogu /home/jayeshkumar. Zmień tę ścieżkę, aby odpowiadała rzeczywistej ścieżce pliku, który chcesz przeczytać.
    3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Sprawdza, czy plik określony przez zmienną $file istnieje. Flaga -e sprawdza istnienie pliku.
    4. podczas gdy IFS= czytaj -r linia; do: Ta linia inicjuje pętlę while, która odczytuje linie z pliku.
      • IFS=: IFS (wewnętrzny separator pól) jest ustawiony na pustą wartość, aby zachować spacje początkowe i końcowe.
      • read -r line: odczytuje bieżącą linię z pliku i zapisuje ją w linii zmiennej.
    5. echo Odczyt linii: $line: Ta linia drukuje zawartość linii, która została odczytana z pliku. Zmienna $line zawiera zawartość bieżącej linii.
    6. # Dodaj tutaj logikę przetwarzania: To jest komentarz zastępczy, w którym możesz dodać własną logikę przetwarzania każdej linii. Na przykład możesz przeanalizować wiersz, wyodrębnić informacje lub wykonać określone działania w oparciu o treść.
    7. gotowe <$plik: Oznacza to koniec pętli while. Plik < $przekierowuje zawartość pliku do odczytu przez pętlę.
    8. else: Jeśli plik nie istnieje (warunek w instrukcji if jest fałszywy), skrypt wykonuje kod z gałęzi else.
    9. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że nie znaleziono określonego pliku.
    10. fi: Ta linia oznacza koniec instrukcji if.
    odczytanie pliku

    odczytanie pliku

    Tutaj użyliśmy ` pw ` polecenie, aby uzyskać ścieżkę bieżącego katalogu.

    17) Napisz w skrypcie powłoki funkcję obliczającą silnię podanej liczby.

    Oto skryptobliczyć silniędanego numeru.

    #!/bin/bash
    # Zdefiniuj funkcję do obliczenia silni
    oblicz_czynnik() {
    liczba = 1 USD
    fakt=1
    for ((i=1; i<=num; i++)); Do
    fakt=$((fakt * i))
    zrobione
    powtórz fakt
    }
    # Poproś użytkownika o wprowadzenie numeru
    echo Wpisz liczbę:
    przeczytaj numer_wejściowy
    # Wywołaj funkcjękalkuluj_czynnikową z numerem wejściowym
    Factorial_result=$(oblicz_czynnik $input_num)
    # Wyświetl wynik silni
    echo Silnia wartości $input_num to: $factorial_result

    Wyjaśnienie:

    1. Skrypt zaczyna się od linii #!/bin/bash określającej interpreter.
    2. call_factorial() jest zdefiniowana jako funkcja. Przyjmuje jeden argument, num, który jest liczbą, dla której należy obliczyć silnię.
    3. Wewnątrz funkcji fakt jest inicjowany na 1. Ta zmienna będzie przechowywać wynik silni.
    4. Pętla for iteruje od 1 do podanej liczby (num). W każdej iteracji mnoży bieżącą wartość faktu przez indeks pętli i.
    5. Po zakończeniu pętli zmienna faktu zawiera obliczoną silnię.
    6. Skrypt monituje użytkownika o wprowadzenie liczby za pomocą funkcji read.
    7. Funkcjakalkuluj_czynnik jest wywoływana z liczbą podaną przez użytkownika, a wynik jest zapisywany w zmiennejfactorial_result.
    8. Na koniec skrypt wyświetla obliczony wynik silni.
    Silnia

    Silnia

    18) Jak radzisz sobie z sygnałami takimi jak Ctrl+C w skrypcie powłoki?

    W skrypcie powłoki możesz obsługiwać sygnały takie jak Ctrl+C (znane również jako SIGINT) za pomocą polecenia trap. Ctrl+C generuje sygnał SIGINT, gdy użytkownik go naciśnie, aby przerwać działający skrypt lub program. Używając polecenia trap, możesz określić działania, które mają zostać podjęte po odebraniu określonego sygnału. Oto jak obsługujesz sygnały takie jak Ctrl+C w skrypcie powłoki:

    #!/bin/bash
    posprzątać() {
    echo Skrypt przerwany. Wykonywanie czyszczenia…
    # Dodaj tutaj swoje działania czyszczące
    wyjście 1
    }
    # Ustaw pułapkę, aby wywołać funkcję czyszczenia po odebraniu Ctrl+C (SIGINT).
    czyszczenie pułapek SIGINT
    # Reszta skryptu
    echo Bieganie…
    spać 10
    echo Zakończono.

    Obsługa sygnałów jest ważna, aby skrypty były niezawodne i sprawnie obsługiwały nieoczekiwane zakłócenia. Możesz dostosować funkcję czyszczenia do swoich konkretnych potrzeb, takich jak zamykanie plików, zatrzymywanie procesów lub rejestrowanie informacji przed zakończeniem skryptu.

    Wyjaśnienie:

    1. #!/bin/bash: Ta linia określa interpreter, który będzie używany do uruchamiania skryptu.
    2. cleanup() { … }: Definiuje funkcję o nazwie sprzątanie. Wewnątrz tej funkcji możesz uwzględnić wszelkie akcje, które należy wykonać w przypadku przerwania skryptu, takie jak zamknięcie plików, zwolnienie zasobów lub wykonanie innych zadań czyszczących.
    3. czyszczenie pułapek SIGINT: Polecenie pułapki służy do skonfigurowania procedury obsługi sygnału. W tym przypadku określa, że ​​po odebraniu sygnału SIGINT (Ctrl+C) powinna zostać wykonana funkcja czyszcząca.
    4. echo Działa…, śpi 10, echo Zakończono.: To tylko przykładowe polecenia symulujące wykonanie skryptu.

    446

    19) Utwórz skrypt, który sprawdza i usuwa zduplikowane linie w pliku tekstowym.

    Oto nasz skrypt linuksowy, w którym usuniemy zduplikowane linie z pliku tekstowego.

    #!/bin/bash
    plik_wejściowy=plik wejściowy.txt
    plik_wyjściowy=plik wyjściowy.txt
    sortuj $plik_wejściowy | uniq> $plik_wyjściowy
    echo Pomyślnie usunięto zduplikowane linie.

    Wyjaśnienie:

    1. Skrypt zaczyna się od shebang (#!/bin/bash), który wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. Zmienna input_file jest ustawiona na nazwę pliku wejściowego zawierającego zduplikowane linie (zmień tę nazwę na rzeczywistą nazwę pliku wejściowego).
    3. Zmienna plik_wyjściowy jest ustawiona na nazwę pliku wyjściowego, z którego zostaną usunięte duplikaty (zmień tę nazwę na żądaną nazwę pliku wyjściowego).
    4. Skrypt używa polecenia sort do sortowania wierszy w pliku wejściowym. Sortowanie linii zapewnia zgrupowanie zduplikowanych linii.
    5. Posortowane linie są następnie przepuszczane przez polecenie uniq, które usuwa kolejne zduplikowane linie. Dane wyjściowe tego procesu są przekierowywane do pliku wyjściowego.
    6. Po usunięciu duplikatów skrypt wyświetla komunikat o powodzeniu.
    usuwanie zduplikowanych linii

    usuwanie zduplikowanych linii

    Tutaj używamy ` kot `, aby wyświetlić tekst znajdujący się w pliku tekstowym.

    20) Napisz skrypt generujący bezpieczne losowe hasło.

    Oto nasz skrypt generujący bezpieczne losowe hasło.

    #!/bin/bash
    # Funkcja generowania losowego hasła
    wygeneruj_hasło() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Wywołaj funkcję i zapisz wygenerowane hasło
    hasło=$(wygeneruj_hasło)
    echo Wygenerowane hasło: $password

    Uwaga: Użytkownik może odpowiednio zmienić długość hasła, zastępując cyfrę `12`.

    Wyjaśnienie:

    1. Skrypt zaczyna się od shebang (#!/bin/bash), wskazującego, że należy go interpretować przy użyciu powłoki Bash.
    2. Funkcja generate_password służy do generowania losowego hasła. Oto jak to działa:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 dzieli przefiltrowane losowe dane na linie o szerokości 12 znaków każda.
      • head -n 1 wybiera pierwszą linię, skutecznie dając nam losową sekwencję znaków o długości 12.
    3. Do zmiennej hasła przypisywany jest wynik wywołania funkcji generate_password.
    4. Na koniec wygenerowane hasło jest wyświetlane za pomocą echa.

    448

    21) Napisz skrypt powłoki, który obliczy całkowity rozmiar wszystkich plików w katalogu.

    Oto skrypt powłoki obliczający całkowity rozmiar wszystkich plików w katalogu.

    #!/bin/bash
    katalog=/ścieżka/do/twojego/katalogu
    total_size=$(du -csh $katalog | grep total | awk „{print $1}”)
    echo Całkowity rozmiar plików w katalogu $: $total_size

    Wyjaśnienie:

    1. Skrypt zaczyna się od znaku #!/bin/bash shebang, wskazującego, że należy go interpretować przy użyciu powłoki Bash.
    2. Zmienna katalogu jest ustawiona na ścieżkę katalogu, dla którego chcesz obliczyć całkowity rozmiar pliku. Zastąp /path/to/your/directory rzeczywistą ścieżką.
    3. Polecenie du służy do szacowania wykorzystania przestrzeni plików. Stosowane opcje to:
      • -c: Wygeneruj sumę całkowitą.
      • -s: Wyświetla tylko całkowity rozmiar określonego katalogu.
      • -h: Rozmiar wydruku w formacie czytelnym dla człowieka (np. KB, MB, GB).
    4. Dane wyjściowe du są przesyłane do grep total w celu odfiltrowania linii zawierającej całkowity rozmiar.
    5. awk „{print $1}” służy do wyodrębnienia pierwszego pola (całkowitego rozmiaru) z linii.
    6. Obliczony całkowity rozmiar jest przechowywany w zmiennej total_size.
    7. Na koniec skrypt wyświetla całkowity rozmiar za pomocą echo.
    Całkowity rozmiar plików

    Całkowity rozmiar plików

    Tutaj użyliśmy ` pw ` polecenie, aby zobaczyć bieżącą ścieżkę katalogu.

    22) Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki.

    Funkcja `jeśli`Staiment Oświadczenie „elif”.
    Zamiar Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki. Zapewnia alternatywne warunki umożliwiające sprawdzenie, czy początkowy warunek if jest fałszywy.
    stosowanie Używany do warunku początkowego. Używane po początkowym warunku if w celu sprawdzenia dodatkowych warunków.
    liczba bloków Może mieć tylko jeden, jeśli jest blokowany. Może mieć wiele bloków elif, ale tylko jeden blok else (opcjonalnie).
    Wykonanie Wykonuje blok kodu powiązany z instrukcją if, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, wykonywany jest blok else (jeśli występuje) (opcjonalnie). Sprawdza każdy warunek elif w kolejności. Jeśli jeden warunek elif jest prawdziwy, wykonywany jest odpowiedni blok kodu, a skrypt kończy cały blok warunkowy. Jeśli żaden z warunków elif nie jest spełniony, wykonywany jest blok else (jeśli występuje).
    Struktury zagnieżdżone Można je zagnieżdżać w innych blokach if, elif lub else. Nie można go zagnieżdżać w innym bloku elif, ale można go użyć w bloku if lub else.

    Rozumiemy to na przykładzie.

    #!/bin/bash
    liczba=5
    jeśli [ $liczba -gt 10 ]; Następnie
    echo Liczba $ jest większa niż 10
    w przeciwnym razie
    echo $liczba nie jest większa niż 10
    Być
    Echo ---
    jeśli [ $liczba -gt 10 ]; Następnie
    echo Liczba $ jest większa niż 10
    elif [$liczba -równ. 10]; Następnie
    echo $liczba jest równa 10
    w przeciwnym razie
    echo $liczba jest mniejsza niż 10
    Być

    Wyjaśnienie:

    W tym przykładzie pierwszy blok if sprawdza, czy liczba jest większa niż 10. Jeśli nie, wypisuje komunikat wskazujący, że liczba nie jest większa niż 10. Drugi blok z instrukcjami elif sprawdza po kolei wiele warunków, aż jeden z nich będzie prawdziwy. W tym przypadku, ponieważ wartość liczby wynosi 5, wynikiem będzie:

    różnica if_elif

    różnica if_elif

    23) Jak używać pętli while do wielokrotnego wykonywania poleceń?

    Pętla while jest używana w skryptach powłoki do wielokrotnego wykonywania zestawu poleceń, o ile określony warunek jest spełniony. Pętla kontynuuje wykonywanie poleceń, aż warunek stanie się fałszywy.

    Oto podstawowa składnia pętli while:

    podczas gdy [warunek]; Do
    # Polecenia do wykonania
    zrobione

    Wyjaśnienie:

    1. Pętla „while” zaczyna się od słowa kluczowego „while”, po którym następuje warunek ujęty w nawiasy kwadratowe „[ ]”.
    2. Ciało pętli zawierające polecenia do wykonania jest ujęte w słowa kluczowe „do” i „done”.
    3. Pętla najpierw sprawdza warunek. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w treści pętli. Po wykonaniu treści pętli warunek jest ponownie sprawdzany i proces jest powtarzany, aż warunek stanie się fałszywy.

    Przykład: Jeśli chcemy wydrukować liczby od 1 do 5

    #!/bin/bash
    licznik=1
    podczas gdy [ $licznik -le 5 ]; Do
    echo Numer: $licznik
    licznik=$((licznik + 1))
    zrobione

    Wyjaśnienie:

    • Zmienna licznika jest ustawiona na 1.
    • Pętla while sprawdza, czy wartość licznika jest mniejsza lub równa 5. Dopóki ten warunek jest spełniony, pętla kontynuuje wykonywanie.
    • Wewnątrz pętli bieżąca wartość licznika jest drukowana za pomocą echo.
    • Licznik jest zwiększany o 1 za pomocą wyrażenia $((licznik + 1)).
    pętla while

    pętla while

    24) Utwórz skrypt powłoki, który znajdzie i wyświetli listę wszystkich pustych plików w katalogu.

    Skrypt powłoki, którego możesz użyć do znalezienia i wyświetlenia wszystkich pustych plików w katalogu za pomocą poleceń `find` i `stat`:

    #!/bin/bash
    katalog = 1 $ ″
    if [ -z $katalog ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być

    Jeśli [ ! -d $katalog]; Następnie
    echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
    wyjście 1
    Być
    echo Puste pliki w katalogu $:
    znajdź katalog $ -typ f -pusty

    Wyjaśnienie:

    1. ` #!/bin/bash `: Nazywa się to shebang i mówi systemowi operacyjnemu, aby użył powłoki Bash do interpretacji i wykonania skryptu.
    2. ` katalog = 1 $ ″ `: Ta linia przypisuje pierwszy argument wiersza poleceń (oznaczony jako $1) do zmiennej ` informator `.
    3. ` if [ -z $katalog ]; Następnie `: Ta linia rozpoczyna instrukcję if, która sprawdza, czy ` informator ` zmienna jest pusta (-z sprawdza pusty ciąg znaków).
    4. ` echo Użycie: $0 `: Jeśli katalog jest pusty, ta linia wyświetla komunikat o użyciu, gdzie ` 0 dolarów ` oznacza nazwę skryptu.
    5. ` wyjście 1 `: Ta linia kończy skrypt z kodem zakończenia ` 1 `, wskazując błąd.
    6. ` Być `: Ta linia oznacza koniec ` Jeśli ` oświadczenie.
    7. ` Jeśli [ ! -d $katalog]; Następnie `: Spowoduje to uruchomienie kolejnej instrukcji if w celu sprawdzenia, czy podany katalog istnieje (` -D ` testuje katalog).
    8. ` echo Błąd: „katalog $” nie jest prawidłowym katalogiem. `: Jeśli podany katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
    9. ` wyjście 1 `: Kończy skrypt z kodem zakończenia ` 1 `.
    10. ` Być `: Oznacza koniec drugiego ` jeśli` oświadczenie.
    11. ` echo Puste pliki w katalogu $: `: Jeśli do tej pory wszystko było w porządku, w tej linii zostanie wyświetlony komunikat wskazujący, że skrypt wyświetli listę pustych plików w określonym katalogu.
    12. ` znajdź katalog $ -typ f -pusty `: Ta linia używa ` znajdować ` polecenie wyszukiwania pustych plików (` -pusty `) typu zwykłe pliki (` -wpisz f `) w określonym katalogu. Następnie wyświetla listę tych pustych plików.
    Znajdowanie pustych plików

    Znajdowanie pustych plików

    Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/

    25) Jaki jest cel polecenia read w skryptach powłoki?

    Polecenie read w skryptach powłoki pozwala skryptowi poprosić Cię o informacje. To tak, jakby komputer zadał Ci pytanie i czekał na Twoją odpowiedź. Jest to przydatne w przypadku skryptów, które wymagają wpisania czegoś lub gdy skrypt musi pracować z informacjami z plików. Polecenie read pomaga skryptowi zatrzymać się i poczekać na to, co wpiszesz, a następnie może wykorzystać te informacje do wykonania dalszych czynności w skrypcie.

    Składnia polecenia odczytu:

    read variable_name>

    Przykład : Jeśli chcemy przyjąć nazwę jako dane wejściowe od użytkownika, aby ją wydrukować.

    #!/bin/bash
    echo Proszę podać swoje imię:
    przeczytaj imię
    echo Witaj, $imie!

    453

    czytaj imię

    Podsumowując, polecenie read służy do przechwytywania danych wprowadzanych przez użytkownika lub danych z plików w skryptach powłoki, dzięki czemu skrypty są bardziej interaktywne i wszechstronne.

    26) Napisz skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

    Oto skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

    #!/bin/bash
    katalog = 1 $ ″
    if [ -z $katalog ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być

    Jeśli [ ! -d $katalog]; Następnie

    echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
    wyjście 1
    Być

    katalog $ CD || wyjście 1

    dla pliku w *; Do
    jeśli [ -f $plik ]; Następnie
    nowa nazwa=$(echo $plik | tr „A-Z” „a-z”)
    [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa
    Być
    zrobione

    Wyjaśnienie:

    1. #!/bin/bash : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. katalog = 1 $ ″ : Ta linia przypisuje pierwszy argument wiersza poleceń do katalogu zmiennych.
    3. if [ -z $katalog ]; Następnie : Ta linia sprawdza, czy zmienna katalogu jest pusta (podczas uruchamiania skryptu nie podano żadnego argumentu).
    4. echo Użycie: $0 : Jeśli katalog jest pusty, w tej linii zostanie wydrukowana informacja o użyciu zawierająca nazwę skryptu ($0).
    5. wyjście 1 : Ta linia kończy skrypt z kodem zakończenia 1, wskazującym, że wystąpił błąd.
    6. F i: Oznacza to koniec pierwszej instrukcji if.
    7. Jeśli [ ! -d $katalog]; Następnie : Ta linia sprawdza, czy podany katalog nie istnieje (-d sprawdza katalog).
    8. echo Błąd: „katalog $” nie jest prawidłowym katalogiem. : Jeśli określony katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
    9. wyjście 1 : Opuszcza skrypt z kodem wyjścia 1.
    10. Być : Oznacza koniec drugiej instrukcji if.
    11. katalog $ CD || wyjście 1 : Zmienia bieżący katalog roboczy na określony katalog. Jeśli zmiana katalogu nie powiedzie się (np. katalog nieistniejący), skrypt zakończy działanie z kodem błędu.
    12. dla pliku w *; Do: I dla pliku w *; Do: inicjuje pętlę, która iteruje po wszystkich elementach w bieżącym katalogu (* pasuje do wszystkich nazw plików).
    13. jeśli [ -f $plik ]; Następnie : Sprawdza, czy bieżący element iteracji pętli jest zwykłym plikiem (-f sprawdza zwykły plik).
    14. nowa nazwa=$(echo $plik | tr „A-Z” „a-z”) : Konwertuje bieżącą nazwę pliku ($file) na małe litery za pomocą polecenia tr i zapisuje wynik w zmiennej newname.
    15. [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa : porównuje oryginalną nazwę pliku z nową nazwą pliku zawierającą małe litery. Jeśli są różne, zmienia nazwę pliku za pomocą polecenia mv.
    16. Być : Oznacza koniec wewnętrznej instrukcji if.
    17. zrobione : Oznacza koniec pętli.

    454

    Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/test

    27) Jak można używać operacji arytmetycznych w skrypcie powłoki?

    Operacje arytmetyczne można wykonywać w skrypcie powłoki przy użyciu różnych wbudowanych metod. Powłoka zapewnia mechanizmy prostych obliczeń arytmetycznych przy użyciu rozwinięcia arytmetycznego, takie jak:

    1. Rozszerzenie arytmetyczne ($((…)))
    2. Używanie polecenia wyraż
    3. Używanie polecenia let

    Oto nasz skrypt powłoki wyjaśniający wszystkie trzy metody operacji arytmetycznych.

    #!/bin/bash
    liczba1=10
    liczba2=5

    #Rozwinięcie arytmetyczne ($((…)))

    wynik=$((liczba1 + liczba2))
    echo Suma: $wynik

    #Używanie polecenia wyraż

    suma=$(wyrażenie $num1 + $num2)
    echo Suma: $suma

    #Używanie polecenia let

    niech suma = liczba1 + liczba2
    echo Suma: $suma

    Wyjaśnienie:

    1. `#!/bin/bash` : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. `liczba1=10` i ` liczba2=5` : Linie te przypisują wartości 10 i 5 zmiennym ` numer1 ` i ` liczba2 `, odpowiednio.
    3. `#Rozwinięcie arytmetyczne ($((…)))` : To jest komentarz wskazujący początek sekcji demonstrującej rozwinięcie arytmetyczne.
    4. `wynik=$((liczba1 + liczba2))` : W tej linii zastosowano rozwinięcie arytmetyczne do obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` wynik ` zmienna.
    5. `echo Suma: $wynik` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` wynik ` zmienna.
    6. `#Używanie polecenia wyrażenia` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` wyr ` polecenie wykonywania operacji arytmetycznych.
    7. `suma=$(wyrażenie $num1 + $num2)` : Ta linia używa ` wyr ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` suma ` zmienna. Należy pamiętać, że ` wyr Polecenie ` wymaga spacji wokół operatorów.
    8. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
    9. `#Używanie polecenia let` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` pozwalać ` polecenie wykonywania operacji arytmetycznych.
    10. `niech suma = liczba1 + liczba2″` : Ta linia używa ` pozwalać ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przypisuje wynik do ` suma ` zmienna. ` pozwalać Polecenie ` nie wymaga spacji wokół operatorów.
    11. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
    arytmetyka

    arytmetyka

    28) Utwórz skrypt sprawdzający, czy host sieciowy jest osiągalny.

    Oto prosty skrypt powłoki, który używa polecenia ping do sprawdzenia, czy host sieciowy jest osiągalny:

    #!/bin/bash
    gospodarz = 1 $ ″
    jeśli [ -z $host ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być
    ping -c 4 $host

    jeśli [$? -równ. 0]; Następnie
    echo $host jest osiągalny.
    w przeciwnym razie
    echo $host jest nieosiągalny.
    Być

    Wyjaśnienie:

    1. Jako argument przyjmuje nazwę hosta lub adres IP i sprawdza, czy argument został podany.
    2. Jeśli nie podano żadnego argumentu, wyświetla komunikat o użyciu i kończy działanie.
    3. Używa polecenia ping z opcją -c 4 do wysyłania czterech żądań echa ICMP do określonego hosta.
    4. Po uruchomieniu polecenia ping sprawdza status wyjścia ($?). Jeśli status wyjścia wynosi 0, oznacza to, że host jest osiągalny i skrypt wyświetla komunikat o powodzeniu. W przeciwnym razie drukuje komunikat o błędzie.

    456

    Notatka : Musimy podać nazwę hosta jako argument podczas uruchamiania skryptu. Tutaj użyliśmy google.com

    29) Napisz skrypt powłoki, aby znaleźć największy element w tablicy:

    Oto skrypt powłoki umożliwiający znalezienie największego elementu w tablicy.

    #!/bin/bash
    # Zadeklaruj tablicę
    tablica=(3 56 24 89 67)

    # Zainicjuj zmienną, aby przechowywać maksymalną wartość, zaczynając od pierwszego elementu

    max=${tablica[0]}

    # Iteruj po tablicy

    dla liczby w ${tablica[@]}; Do

    # Porównaj każdy element z bieżącym maksimum

    jeśli ((liczba> maks.)); Następnie
    maks.=$liczba
    Być
    zrobione

    # Wydrukuj wartość maksymalną

    echo Maksymalny element tablicy to: $max

    Wyjaśnienie:

    1. ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. ` tablica=(3 56 24 89 67) `: Tablica jest zadeklarowana i zainicjowana wartościami.
    3. ` max=${tablica[0]} `: `max` jest inicjalizowane pierwszym elementem tablicy.
    4. ` dla liczby w ${tablica[@]}; Do `: Pętla „for” służy do iteracji po elementach tablicy.
    5. ` jeśli ((liczba> maks.)); Następnie `: Instrukcja `if` sprawdza, czy bieżący element `num` jest większy od bieżącego maksimum `max`.
    6. ` max=$num`: Jeśli`num ` jest większe niż `max`, `max` jest aktualizowane o wartość num.
    7. ` zrobione `: Pętla „for” jest zamknięta.
    8. ` echo Maksymalny element tablicy to: $max `: Na koniec skrypt wypisuje maksymalną wartość znalezioną w tablicy.
    461

    największa liczba

    30) Napisz skrypt obliczający sumę elementów w tablicy.

    #!/bin/bash

    # Zadeklaruj tablicę

    tablica=(1 65 22 19 94)

    # Zainicjuj zmienną, aby zapisać sumę

    suma=0

    # Iteruj po tablicy i dodaj każdy element do sumy

    dla liczby w ${tablica[@]}; Do
    rano=$((rano + rano))
    zrobione

    # Wydrukuj sumę

    echo Suma elementów tablicy wynosi: $sum

    Wyjaśnienie:

    ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.

    ` tablica=(1 65 22 19 94) `: Tablica jest zadeklarowana i zainicjowana wartościami.

    ` suma=0 `:` suma ` jest inicjalizowane na zero, aby przechowywać sumę elementów.

    ` dla liczby w ${tablica[@]}; Do `: A` Do Pętla ` służy do iteracji po elementach tablicy.

    ` rano=$((rano + rano)) `: Wewnątrz pętli każdy element ` na jednego ` dodaje się do ` suma ` zmienna.

    ` zrobione `: ` Do ` pętla jest zamknięta.

    `echo Suma elementów tablicy wynosi: $sum`: Na koniec skrypt wypisuje sumę wszystkich elementów tablicy.

    462

    Suma elementów

    Dowiedz się więcej o skryptach powłoki

    Wniosek

    Wszyscy maniacy wiemy, że skrypt powłoki jest bardzo przydatny w zwiększaniu produktywności pracy, a także oszczędzaniu czasu. Tak więc w tym artykule omówiliśmy 30 bardzo przydatnych i najbardziej oszukańczych przykładów skryptów powłoki . Mamy nadzieję, że ten kompletny przewodnik na temat przykładowych skryptów powłoki pomoże Ci zrozumieć wszystko na temat skryptów powłoki.



    : Jeśli katalog jest pusty, w tej linii zostanie wydrukowana informacja o użyciu zawierająca nazwę skryptu (

    W przypadku wszystkich dystrybucji Linuksa skrypt powłoki jest jak magiczna różdżka, która automatyzuje proces, oszczędza czas użytkowników i zwiększa produktywność. Ten samouczek dotyczący skryptowania wprowadzi Cię w ponad 25 przykładów tworzenia skryptów.

    Zanim jednak przejdziemy do tematu skrypty powłoki przykłady, przyjrzyjmy się skryptowi powłoki i rzeczywistym przypadkom użycia skryptów powłoki.

    Co to jest skrypt powłoki?

    Cóż, skorupa jest interfejs wiersza polecenia ( interpreter wiersza poleceń ), który działa w oknie tekstowym, w którym użytkownicy mogą zarządzać poleceniami powłoki i je wykonywać. Z drugiej strony proces pisania zestawu poleceń do wykonania w systemie Linux. Plik zawierający takie instrukcje nazywany jest skryptem bash.

    Zastosowania skryptów powłoki

    Poniżej znajduje się kilka typowych zastosowań skryptu powłoki:

    • Automatyzacja zadań – Można go używać do automatyzacji powtarzalnych zadań, takich jak regularne tworzenie kopii zapasowych i zadania instalacji oprogramowania.
    • Dostosowywanie - Można używać skryptów powłoki do projektowania środowiska wiersza poleceń i łatwego wykonywania zadań zgodnie z potrzebami.
    • Zarządzanie plikami - Skryptów powłoki można również używać do zarządzania plikami i katalogami oraz manipulowania nimi, na przykład przenoszenia, kopiowania, zmiany nazwy lub usuwania plików.

    Przykłady skryptów powłoki w systemie Linux

    1) Co oznacza shebang (#!) na początku skryptu powłoki?

    The shebang (#!) na początku skryptu wskazuje interpreter, który powinien zostać użyty do wykonania skryptu. Mówi systemowi, która powłoka lub interpreter powinien interpretować polecenia skryptu.

    Na przykład: Załóżmy, że mamy skrypt o nazwie mójscript.sh napisane w powłoce Bash:

    szulernia

    szulernia

    W tym przykładzie:

    • Znak #!/bin/bash na początku skryptu wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    • Polecenia echo służą do drukowania komunikatów na terminalu.

    2) Jak uruchomić skrypt powłoki z wiersza poleceń?

    Aby uruchomić skrypt powłoki z wiersza poleceń, musimy wykonać następujące kroki:

    • Upewnij się, że plik skryptu ma uprawnienia do wykonywania, używając polecenie chmod :
    chmod +x myscript.sh>
    • Wykonaj skrypt, używając jego nazwy pliku:
    ./myscript.sh>

    Tutaj musisz wymienić myscript.sh z twoją nazwą skryptu.

    3) Napisz skrypt powłoki, który wypisuje plik techcodeview.com na terminalu.

    Utwórz nazwę skryptu `myscript.sh` (używamy ` ponieważ ` edytor, możesz wybrać dowolny edytor)

    vim myscript.sh>

    #!/bin/bash
    # Ten skrypt drukuje plik techcodeview.com na terminalu
    echo techcodeview.com

    Nazwa wydruku

    Nazwa wydruku

    Sprawiamy, że nasz skrypt jest wykonywalny, używając `chmod +x`, a następnie wykonujemy go za pomocą `./myscipt.sh` i uzyskujemy żądane wyjście techcodeview.com.

    4) Wyjaśnij cel polecenia echo w skryptach powłoki.

    The polecenie echa służy do wyświetlania tekstu lub zmiennych na terminalu. Jest powszechnie używany do drukowania komunikatów, wartości zmiennych i generowania wyników programu.

    434

    polecenie echa

    W tym przykładzie wykonaliśmy `echo` bezpośrednio na terminalu, ponieważ działa to tak samo w skrypcie powłoki.

    5) Jak przypisać wartość do zmiennej w skrypcie powłoki?

    Zmiennym przypisuje się wartości za pomocą operatora przypisania =.

    Na przykład:

    #!/bin/bash
    # Przypisywanie wartości do zmiennej
    imię = Jayesh
    wiek=21
    echo $imię $wiek

    Wyjaśnienie:

    • Zmiennej nazwie przypisano wartość Jayesh.
    • Zmiennej wiek przypisano wartość 21.
    • echo służy do drukowania, a `$nazwa` `$wiek` służy do wywoływania wartości przechowywanej w zmiennych.

    435

    6) Napisz skrypt powłoki, który jako dane wejściowe pobiera nazwę użytkownika i wita go.

    Utwórz skrypt o nazwie `example.sh`.

    #!/bin/bash
    # Zapytaj użytkownika o jego imię i nazwisko
    echo Jak masz na imię?
    przeczytaj imię
    # Powitaj użytkownika
    echo Witaj, $imie! Miło mi cię poznać.

    Wyjaśnienie:

    • #!/bin/bash: To jest linia Shebang. Mówi systemowi, aby użył interpretera Bash do wykonania skryptu.
    • # Zapytaj użytkownika o jego imię i nazwisko: To jest komentarz. Zapewnia kontekst dotyczący nadchodzącego kodu. Komentarze są ignorowane przez tłumacza.
    • echo Jak się nazywasz?: Polecenie echo służy do wyświetlania tekstu w cudzysłowie na terminalu.
    • read name: Polecenie read czeka, aż użytkownik wprowadzi tekst i zapisuje go w nazwie zmiennej.
    • echo Witaj, $imię! Miło cię poznać.: Ta linia używa polecenia echo do wydrukowania wiadomości powitalnej zawierającej wartość zmiennej name, która została pobrana z danych wprowadzonych przez użytkownika.

    436

    7) Jak dodać komentarze do skryptu powłoki?

    Komentarze w skryptach powłoki służą do zapewnienia wyjaśnień lub kontekstu kodu. Są one ignorowane przez tłumacza i są przeznaczone wyłącznie dla ludzi czytających scenariusz. Możesz dodawać komentarze, używając symbolu #.

    #!/bin/bash
    # To jest komentarz wyjaśniający cel skryptu
    powtórz GFG

    8) Utwórz skrypt powłoki, który sprawdza, czy w bieżącym katalogu istnieje plik.

    Oto skrypt sprawdzający, czy w bieżącym katalogu istnieje plik o nazwie example.txt:

    #!/bin/bash
    plik=przykład.txt
    # Sprawdź, czy plik istnieje
    if [ -e $plik ]; Następnie
    echo Plik istnieje: $plik
    w przeciwnym razie
    echo Nie znaleziono pliku: $file
    Być

    Wyjaśnienie:

    1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
    2. file=example.txt: Ta linia definiuje plik zmiennych i przypisuje mu wartość example.txt. Możesz zastąpić tę nazwę plikiem, który chcesz sprawdzić.
    3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Warunek [ -e $plik ] sprawdza, czy plik określony przez wartość zmiennej pliku istnieje. Flaga -e służy do sprawdzania istnienia pliku.
    4. echo Plik istnieje: $plik: Jeśli warunek jest spełniony (tj. plik istnieje), w tej linii zostanie wyświetlony komunikat wskazujący, że plik istnieje, wraz z nazwą pliku.
    5. else: Jeśli warunek jest fałszywy (tzn. plik nie istnieje), skrypt wykonuje kod z gałęzi else.
    6. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że określony plik nie został znaleziony, wraz z jego nazwą.
    7. fi: Ta linia oznacza koniec instrukcji if.
    Znalezienie pliku

    Znalezienie pliku

    9) Jaka jest różnica pomiędzy pojedynczymi cudzysłowami („) i podwójnymi cudzysłowami () w skryptach powłoki?

    Pojedyncze cudzysłowy („) i podwójne cudzysłowy () służą do umieszczania ciągów znaków w skryptach powłoki, ale zachowują się inaczej:

    • Pojedyncze cudzysłowy: wszystko pomiędzy pojedynczymi cudzysłowami jest traktowane jako ciąg znaków. Nazwy zmiennych i większość znaków specjalnych nie są rozwijane.
    • Podwójne cudzysłowy: Zmienne i niektóre znaki specjalne w podwójnych cudzysłowach są rozwijane. Treść podlega podstawieniu zmiennych i podstawieniu poleceń.

    #!/bin/bash

    abcd=Witam
    echo „$abcd” # Dane wyjściowe: $abcd
    echo $abcd # Wynik: Witam

    10) Jak można używać argumentów wiersza poleceń w skrypcie powłoki?

    Argumenty wiersza poleceń to wartości dostarczane do skryptu podczas jego wykonywania. Dostęp do nich można uzyskać w skrypcie za pomocą specjalnych zmiennych, takich jak 1 $, 2 $ itd., gdzie 1 $ reprezentuje pierwszy argument, 2 $ reprezentuje drugi argument i tak dalej.

    Na przykład: Jeśli nasza nazwa skryptu w `example.sh`

    #!/bin/bash

    echo Nazwa skryptu: $0
    echo Pierwszy argument: $1
    echo Drugi argument: 2 $

    Jeśli uruchomimy skrypt z `.example.sh hello_1 hello_2`, wyświetli się:

    argumenty cli

    argumenty cli

    11) Jak używać pętli for do iteracji po liście wartości?

    Utwórz nazwę skryptu `example.sh`.

    #!/bin/bash

    owoce=(jabłko banan wiśnia data)
    dla owoców w ${fruits[@]}; Do
    echo Aktualny owoc: $owoc
    zrobione

    Wyjaśnienie:

    Linia `fruits=` tworzy tablicę o nazwie owoce zawierającą cztery elementy: jabłko, banan, wiśnia i data.

    • dla owoców w ${fruits[@]}; do: Ta linia rozpoczyna pętlę for. Oto znaczenie każdej części:
    • dla owoców: deklaruje zmienną pętli zwaną owocami. W każdej iteracji pętli Fruit będzie przechowywać wartość bieżącego elementu z tablicy Fruits.
    • ${fruits[@]}: To jest rozwinięcie tablicy, które pobiera wszystkie elementy z tablicy Fruits. Składnia ${…} gwarantuje, że każdy element będzie traktowany jako oddzielny element.
    • do: To słowo kluczowe oznacza początek treści pętli.
    • echo Bieżący owoc: $owoc: Wewnątrz pętli w tej linii używane jest polecenie echo do wyświetlenia bieżącej wartości zmiennej owocowej pętli. Wypisuje komunikat w rodzaju Bieżący owoc: jabłko dla każdego owocu w tablicy.
    • gotowe: To słowo kluczowe oznacza koniec treści pętli. Informuje skrypt, że pętla została zakończona.
    dla pętli

    dla pętli

    12) Napisz skrypt powłoki, który oblicza sumę liczb całkowitych od 1 do N za pomocą pętli.

    Utwórz nazwę skryptu `example.sh`.

    #!/bin/bash

    echo Podaj liczbę (N):
    przeczytaj N
    suma=0
    for (( i=1; i<=$N; i++ )); Do
    suma=$((suma + i))
    zrobione
    echo Suma liczb całkowitych od 1 do $N to: $sum

    Wyjaśnienie:
    Skrypt rozpoczyna się od prośby o wprowadzenie liczby (N) za pomocą polecenia read. Ta liczba określi, ile razy pętla zostanie uruchomiona.

    1. Suma zmiennej jest inicjowana na 0. Ta zmienna będzie śledzić sumę liczb całkowitych.
    2. Pętla for zaczyna się od for (( i=1; i<=$N; i++ )). Ta struktura pętli służy do powtarzania zestawu działań określoną liczbę razy, w tym przypadku od 1 do wartości N.
    3. Wewnątrz pętli dzieją się następujące rzeczy:
      • i=1 ustawia zmienną pętli i na 1 na początku każdej iteracji.
      • Warunek pętli i<=$N sprawdza, czy i jest nadal mniejsze lub równe podanej liczbie N.
      • Jeżeli warunek jest spełniony, wykonywane jest ciało pętli.
      • sum=$((suma + i)) oblicza nową wartość sumy, dodając do niej bieżącą wartość i. Spowoduje to dodanie liczb całkowitych od 1 do bieżącej wartości i.
    4. Po każdej iteracji i++ zwiększa wartość i o 1.
    5. Pętla działa dopóki warunek i<=$N nie stanie się fałszywy (kiedy i stanie się większe niż N).
    6. Po zakończeniu pętli skrypt wyświetla sumę liczb całkowitych od 1 do wprowadzonej liczby N.

    439

    13) Utwórz skrypt, który wyszukuje określone słowo w pliku i zlicza jego wystąpienia.

    Utwórz nazwę skryptu `word_count.sh`

    #!/bin/bash

    echo Wpisz szukane słowo:
    przeczytaj słowo_celowe
    echo Podaj nazwę pliku:
    przeczytaj nazwę pliku
    liczba=$(grep -o -w $słowo_docelowe $nazwa pliku | wc -l)
    echo Słowo „$target_word” pojawia się $count razy w „$filename”.

    Wyjaśnienie:

    • echo Wpisz słowo do wyszukania:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o wprowadzenie słowa, którego chce szukać w pliku.
    • read target_word: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie target_word.
    • echo Wpisz nazwę pliku:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o podanie nazwy pliku, który chce przeszukać.
    • read filename: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie filename.
    • count=$(grep -o -w $target_word $nazwa pliku | wc -l): Ta linia wykonuje główną pracę skryptu. Rozłóżmy to dalej:
      • grep -o -w $słowo_docelowe $nazwa pliku: Ta część polecenia wyszukuje wystąpienia słowa_docelowego w określonej nazwie pliku. Opcje -o i -w zapewniają, że zliczane będą tylko dopasowania całych słów.
      • |: To jest potok, który pobiera dane wyjściowe poprzedniego polecenia i wysyła je jako dane wejściowe do następnego polecenia.
      • wc -l: Ta część polecenia wykorzystuje polecenie wc do zliczenia liczby wierszy na wejściu. Opcja -l specjalnie zlicza linie.
      • Całe polecenie oblicza liczbę wystąpień słowa_docelowego w pliku i przypisuje tę liczbę do zmiennej coun

    441

    14) Wyjaśnij różnice pomiędzy standardowym wyjściem (stdout) i standardowym wyjściem błędów (stderr).

    Główna różnica między standardowym wyjściem (stdout) a standardowym błędem (stderr) jest następująca:

    • Standardowe wyjście (stdout): Jest to domyślny strumień wyjściowy, do którego trafiają zwykłe dane wyjściowe polecenia. Domyślnie jest wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą>.
    • Błąd standardowy (stderr): Jest to strumień wyjściowy komunikatów o błędach i ostrzeżeń. Domyślnie jest również wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą 2>.

    15) Wyjaśnij koncepcję instrukcji warunkowych w skryptach powłoki.

    Instrukcje warunkowe w skryptach powłoki pozwalają nam podejmować decyzje i kontrolować przebieg naszego scenariusza w oparciu o określone warunki. Umożliwiają one naszemu skryptowi wykonywanie różnych zestawów poleceń w zależności od tego, czy dany warunek jest prawdziwy, czy fałszywy. Podstawowymi instrukcjami warunkowymi w skryptach powłoki są instrukcja if, instrukcja elif (opcjonalna) i instrukcja else (opcjonalna).

    Oto podstawowa struktura instrukcji warunkowej w skrypcie powłoki:

    jeśli [warunek]; Następnie
    # Polecenia do wykonania, jeśli warunek jest prawdziwy
    elif [inny_warunek]; Następnie
    # Polecenia do wykonania, jeśli inny_warunek jest prawdziwy (opcjonalnie)
    w przeciwnym razie
    # Polecenia do wykonania, jeśli żaden z warunków nie jest spełniony (opcjonalnie)
    Być

    Wyjaśnienie:

    • [warunek] = Polecenie, które ocenia warunek i zwraca prawdziwy (0) lub fałszywy (niezerowy) status wyjścia.
    • then = Jest to słowo kluczowe wskazujące, że następujące po nim polecenia zostaną wykonane, jeśli warunek ma wartość true.
    • elif = (skrót od else if) Jest to sekcja, która pozwala nam określić dodatkowe warunki do sprawdzenia.
    • else = jest to sekcja zawierająca polecenia, które zostaną wykonane, jeśli żaden z warunków nie zostanie spełniony.
    • fi = Jest to słowo kluczowe oznaczające koniec bloku warunkowego.

    16) Jak odczytać linie z pliku w skrypcie powłoki?

    Do czytaj linie z pliku w skrypcie powłoki, możemy użyć różnych metod, ale jednym z powszechnych podejść jest użycie pętli while w połączeniu z poleceniem read. Oto jak możemy to zrobić:

    #!/bin/bash
    plik=/home/jayeshkumar/jayesh.txt
    # Sprawdź, czy plik istnieje
    if [ -e $plik ]; Następnie
    podczas gdy IFS= czytaj -r linia; Do
    echo Odczytana linia: $line
    # Dodaj tutaj logikę przetwarzania
    gotowe <$plik
    w przeciwnym razie
    echo Nie znaleziono pliku: $file
    Być

    Wyjaśnienie:

    1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
    2. file=/home/jayeshkumar/jayesh.txt: Ta linia definiuje plik zmiennych i przypisuje pełną ścieżkę do pliku jayesh.txt w katalogu /home/jayeshkumar. Zmień tę ścieżkę, aby odpowiadała rzeczywistej ścieżce pliku, który chcesz przeczytać.
    3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Sprawdza, czy plik określony przez zmienną $file istnieje. Flaga -e sprawdza istnienie pliku.
    4. podczas gdy IFS= czytaj -r linia; do: Ta linia inicjuje pętlę while, która odczytuje linie z pliku.
      • IFS=: IFS (wewnętrzny separator pól) jest ustawiony na pustą wartość, aby zachować spacje początkowe i końcowe.
      • read -r line: odczytuje bieżącą linię z pliku i zapisuje ją w linii zmiennej.
    5. echo Odczyt linii: $line: Ta linia drukuje zawartość linii, która została odczytana z pliku. Zmienna $line zawiera zawartość bieżącej linii.
    6. # Dodaj tutaj logikę przetwarzania: To jest komentarz zastępczy, w którym możesz dodać własną logikę przetwarzania każdej linii. Na przykład możesz przeanalizować wiersz, wyodrębnić informacje lub wykonać określone działania w oparciu o treść.
    7. gotowe <$plik: Oznacza to koniec pętli while. Plik < $przekierowuje zawartość pliku do odczytu przez pętlę.
    8. else: Jeśli plik nie istnieje (warunek w instrukcji if jest fałszywy), skrypt wykonuje kod z gałęzi else.
    9. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że nie znaleziono określonego pliku.
    10. fi: Ta linia oznacza koniec instrukcji if.
    odczytanie pliku

    odczytanie pliku

    Tutaj użyliśmy ` pw ` polecenie, aby uzyskać ścieżkę bieżącego katalogu.

    17) Napisz w skrypcie powłoki funkcję obliczającą silnię podanej liczby.

    Oto skryptobliczyć silniędanego numeru.

    #!/bin/bash
    # Zdefiniuj funkcję do obliczenia silni
    oblicz_czynnik() {
    liczba = 1 USD
    fakt=1
    for ((i=1; i<=num; i++)); Do
    fakt=$((fakt * i))
    zrobione
    powtórz fakt
    }
    # Poproś użytkownika o wprowadzenie numeru
    echo Wpisz liczbę:
    przeczytaj numer_wejściowy
    # Wywołaj funkcjękalkuluj_czynnikową z numerem wejściowym
    Factorial_result=$(oblicz_czynnik $input_num)
    # Wyświetl wynik silni
    echo Silnia wartości $input_num to: $factorial_result

    Wyjaśnienie:

    1. Skrypt zaczyna się od linii #!/bin/bash określającej interpreter.
    2. call_factorial() jest zdefiniowana jako funkcja. Przyjmuje jeden argument, num, który jest liczbą, dla której należy obliczyć silnię.
    3. Wewnątrz funkcji fakt jest inicjowany na 1. Ta zmienna będzie przechowywać wynik silni.
    4. Pętla for iteruje od 1 do podanej liczby (num). W każdej iteracji mnoży bieżącą wartość faktu przez indeks pętli i.
    5. Po zakończeniu pętli zmienna faktu zawiera obliczoną silnię.
    6. Skrypt monituje użytkownika o wprowadzenie liczby za pomocą funkcji read.
    7. Funkcjakalkuluj_czynnik jest wywoływana z liczbą podaną przez użytkownika, a wynik jest zapisywany w zmiennejfactorial_result.
    8. Na koniec skrypt wyświetla obliczony wynik silni.
    Silnia

    Silnia

    18) Jak radzisz sobie z sygnałami takimi jak Ctrl+C w skrypcie powłoki?

    W skrypcie powłoki możesz obsługiwać sygnały takie jak Ctrl+C (znane również jako SIGINT) za pomocą polecenia trap. Ctrl+C generuje sygnał SIGINT, gdy użytkownik go naciśnie, aby przerwać działający skrypt lub program. Używając polecenia trap, możesz określić działania, które mają zostać podjęte po odebraniu określonego sygnału. Oto jak obsługujesz sygnały takie jak Ctrl+C w skrypcie powłoki:

    #!/bin/bash
    posprzątać() {
    echo Skrypt przerwany. Wykonywanie czyszczenia…
    # Dodaj tutaj swoje działania czyszczące
    wyjście 1
    }
    # Ustaw pułapkę, aby wywołać funkcję czyszczenia po odebraniu Ctrl+C (SIGINT).
    czyszczenie pułapek SIGINT
    # Reszta skryptu
    echo Bieganie…
    spać 10
    echo Zakończono.

    Obsługa sygnałów jest ważna, aby skrypty były niezawodne i sprawnie obsługiwały nieoczekiwane zakłócenia. Możesz dostosować funkcję czyszczenia do swoich konkretnych potrzeb, takich jak zamykanie plików, zatrzymywanie procesów lub rejestrowanie informacji przed zakończeniem skryptu.

    Wyjaśnienie:

    1. #!/bin/bash: Ta linia określa interpreter, który będzie używany do uruchamiania skryptu.
    2. cleanup() { … }: Definiuje funkcję o nazwie sprzątanie. Wewnątrz tej funkcji możesz uwzględnić wszelkie akcje, które należy wykonać w przypadku przerwania skryptu, takie jak zamknięcie plików, zwolnienie zasobów lub wykonanie innych zadań czyszczących.
    3. czyszczenie pułapek SIGINT: Polecenie pułapki służy do skonfigurowania procedury obsługi sygnału. W tym przypadku określa, że ​​po odebraniu sygnału SIGINT (Ctrl+C) powinna zostać wykonana funkcja czyszcząca.
    4. echo Działa…, śpi 10, echo Zakończono.: To tylko przykładowe polecenia symulujące wykonanie skryptu.

    446

    19) Utwórz skrypt, który sprawdza i usuwa zduplikowane linie w pliku tekstowym.

    Oto nasz skrypt linuksowy, w którym usuniemy zduplikowane linie z pliku tekstowego.

    #!/bin/bash
    plik_wejściowy=plik wejściowy.txt
    plik_wyjściowy=plik wyjściowy.txt
    sortuj $plik_wejściowy | uniq> $plik_wyjściowy
    echo Pomyślnie usunięto zduplikowane linie.

    Wyjaśnienie:

    1. Skrypt zaczyna się od shebang (#!/bin/bash), który wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. Zmienna input_file jest ustawiona na nazwę pliku wejściowego zawierającego zduplikowane linie (zmień tę nazwę na rzeczywistą nazwę pliku wejściowego).
    3. Zmienna plik_wyjściowy jest ustawiona na nazwę pliku wyjściowego, z którego zostaną usunięte duplikaty (zmień tę nazwę na żądaną nazwę pliku wyjściowego).
    4. Skrypt używa polecenia sort do sortowania wierszy w pliku wejściowym. Sortowanie linii zapewnia zgrupowanie zduplikowanych linii.
    5. Posortowane linie są następnie przepuszczane przez polecenie uniq, które usuwa kolejne zduplikowane linie. Dane wyjściowe tego procesu są przekierowywane do pliku wyjściowego.
    6. Po usunięciu duplikatów skrypt wyświetla komunikat o powodzeniu.
    usuwanie zduplikowanych linii

    usuwanie zduplikowanych linii

    Tutaj używamy ` kot `, aby wyświetlić tekst znajdujący się w pliku tekstowym.

    20) Napisz skrypt generujący bezpieczne losowe hasło.

    Oto nasz skrypt generujący bezpieczne losowe hasło.

    #!/bin/bash
    # Funkcja generowania losowego hasła
    wygeneruj_hasło() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Wywołaj funkcję i zapisz wygenerowane hasło
    hasło=$(wygeneruj_hasło)
    echo Wygenerowane hasło: $password

    Uwaga: Użytkownik może odpowiednio zmienić długość hasła, zastępując cyfrę `12`.

    Wyjaśnienie:

    1. Skrypt zaczyna się od shebang (#!/bin/bash), wskazującego, że należy go interpretować przy użyciu powłoki Bash.
    2. Funkcja generate_password służy do generowania losowego hasła. Oto jak to działa:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 dzieli przefiltrowane losowe dane na linie o szerokości 12 znaków każda.
      • head -n 1 wybiera pierwszą linię, skutecznie dając nam losową sekwencję znaków o długości 12.
    3. Do zmiennej hasła przypisywany jest wynik wywołania funkcji generate_password.
    4. Na koniec wygenerowane hasło jest wyświetlane za pomocą echa.

    448

    21) Napisz skrypt powłoki, który obliczy całkowity rozmiar wszystkich plików w katalogu.

    Oto skrypt powłoki obliczający całkowity rozmiar wszystkich plików w katalogu.

    #!/bin/bash
    katalog=/ścieżka/do/twojego/katalogu
    total_size=$(du -csh $katalog | grep total | awk „{print $1}”)
    echo Całkowity rozmiar plików w katalogu $: $total_size

    Wyjaśnienie:

    1. Skrypt zaczyna się od znaku #!/bin/bash shebang, wskazującego, że należy go interpretować przy użyciu powłoki Bash.
    2. Zmienna katalogu jest ustawiona na ścieżkę katalogu, dla którego chcesz obliczyć całkowity rozmiar pliku. Zastąp /path/to/your/directory rzeczywistą ścieżką.
    3. Polecenie du służy do szacowania wykorzystania przestrzeni plików. Stosowane opcje to:
      • -c: Wygeneruj sumę całkowitą.
      • -s: Wyświetla tylko całkowity rozmiar określonego katalogu.
      • -h: Rozmiar wydruku w formacie czytelnym dla człowieka (np. KB, MB, GB).
    4. Dane wyjściowe du są przesyłane do grep total w celu odfiltrowania linii zawierającej całkowity rozmiar.
    5. awk „{print $1}” służy do wyodrębnienia pierwszego pola (całkowitego rozmiaru) z linii.
    6. Obliczony całkowity rozmiar jest przechowywany w zmiennej total_size.
    7. Na koniec skrypt wyświetla całkowity rozmiar za pomocą echo.
    Całkowity rozmiar plików

    Całkowity rozmiar plików

    Tutaj użyliśmy ` pw ` polecenie, aby zobaczyć bieżącą ścieżkę katalogu.

    22) Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki.

    Funkcja `jeśli`Staiment Oświadczenie „elif”.
    Zamiar Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki. Zapewnia alternatywne warunki umożliwiające sprawdzenie, czy początkowy warunek if jest fałszywy.
    stosowanie Używany do warunku początkowego. Używane po początkowym warunku if w celu sprawdzenia dodatkowych warunków.
    liczba bloków Może mieć tylko jeden, jeśli jest blokowany. Może mieć wiele bloków elif, ale tylko jeden blok else (opcjonalnie).
    Wykonanie Wykonuje blok kodu powiązany z instrukcją if, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, wykonywany jest blok else (jeśli występuje) (opcjonalnie). Sprawdza każdy warunek elif w kolejności. Jeśli jeden warunek elif jest prawdziwy, wykonywany jest odpowiedni blok kodu, a skrypt kończy cały blok warunkowy. Jeśli żaden z warunków elif nie jest spełniony, wykonywany jest blok else (jeśli występuje).
    Struktury zagnieżdżone Można je zagnieżdżać w innych blokach if, elif lub else. Nie można go zagnieżdżać w innym bloku elif, ale można go użyć w bloku if lub else.

    Rozumiemy to na przykładzie.

    #!/bin/bash
    liczba=5
    jeśli [ $liczba -gt 10 ]; Następnie
    echo Liczba $ jest większa niż 10
    w przeciwnym razie
    echo $liczba nie jest większa niż 10
    Być
    Echo ---
    jeśli [ $liczba -gt 10 ]; Następnie
    echo Liczba $ jest większa niż 10
    elif [$liczba -równ. 10]; Następnie
    echo $liczba jest równa 10
    w przeciwnym razie
    echo $liczba jest mniejsza niż 10
    Być

    Wyjaśnienie:

    W tym przykładzie pierwszy blok if sprawdza, czy liczba jest większa niż 10. Jeśli nie, wypisuje komunikat wskazujący, że liczba nie jest większa niż 10. Drugi blok z instrukcjami elif sprawdza po kolei wiele warunków, aż jeden z nich będzie prawdziwy. W tym przypadku, ponieważ wartość liczby wynosi 5, wynikiem będzie:

    różnica if_elif

    różnica if_elif

    23) Jak używać pętli while do wielokrotnego wykonywania poleceń?

    Pętla while jest używana w skryptach powłoki do wielokrotnego wykonywania zestawu poleceń, o ile określony warunek jest spełniony. Pętla kontynuuje wykonywanie poleceń, aż warunek stanie się fałszywy.

    Oto podstawowa składnia pętli while:

    podczas gdy [warunek]; Do
    # Polecenia do wykonania
    zrobione

    Wyjaśnienie:

    1. Pętla „while” zaczyna się od słowa kluczowego „while”, po którym następuje warunek ujęty w nawiasy kwadratowe „[ ]”.
    2. Ciało pętli zawierające polecenia do wykonania jest ujęte w słowa kluczowe „do” i „done”.
    3. Pętla najpierw sprawdza warunek. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w treści pętli. Po wykonaniu treści pętli warunek jest ponownie sprawdzany i proces jest powtarzany, aż warunek stanie się fałszywy.

    Przykład: Jeśli chcemy wydrukować liczby od 1 do 5

    #!/bin/bash
    licznik=1
    podczas gdy [ $licznik -le 5 ]; Do
    echo Numer: $licznik
    licznik=$((licznik + 1))
    zrobione

    Wyjaśnienie:

    • Zmienna licznika jest ustawiona na 1.
    • Pętla while sprawdza, czy wartość licznika jest mniejsza lub równa 5. Dopóki ten warunek jest spełniony, pętla kontynuuje wykonywanie.
    • Wewnątrz pętli bieżąca wartość licznika jest drukowana za pomocą echo.
    • Licznik jest zwiększany o 1 za pomocą wyrażenia $((licznik + 1)).
    pętla while

    pętla while

    24) Utwórz skrypt powłoki, który znajdzie i wyświetli listę wszystkich pustych plików w katalogu.

    Skrypt powłoki, którego możesz użyć do znalezienia i wyświetlenia wszystkich pustych plików w katalogu za pomocą poleceń `find` i `stat`:

    #!/bin/bash
    katalog = 1 $ ″
    if [ -z $katalog ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być

    Jeśli [ ! -d $katalog]; Następnie
    echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
    wyjście 1
    Być
    echo Puste pliki w katalogu $:
    znajdź katalog $ -typ f -pusty

    Wyjaśnienie:

    1. ` #!/bin/bash `: Nazywa się to shebang i mówi systemowi operacyjnemu, aby użył powłoki Bash do interpretacji i wykonania skryptu.
    2. ` katalog = 1 $ ″ `: Ta linia przypisuje pierwszy argument wiersza poleceń (oznaczony jako $1) do zmiennej ` informator `.
    3. ` if [ -z $katalog ]; Następnie `: Ta linia rozpoczyna instrukcję if, która sprawdza, czy ` informator ` zmienna jest pusta (-z sprawdza pusty ciąg znaków).
    4. ` echo Użycie: $0 `: Jeśli katalog jest pusty, ta linia wyświetla komunikat o użyciu, gdzie ` 0 dolarów ` oznacza nazwę skryptu.
    5. ` wyjście 1 `: Ta linia kończy skrypt z kodem zakończenia ` 1 `, wskazując błąd.
    6. ` Być `: Ta linia oznacza koniec ` Jeśli ` oświadczenie.
    7. ` Jeśli [ ! -d $katalog]; Następnie `: Spowoduje to uruchomienie kolejnej instrukcji if w celu sprawdzenia, czy podany katalog istnieje (` -D ` testuje katalog).
    8. ` echo Błąd: „katalog $” nie jest prawidłowym katalogiem. `: Jeśli podany katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
    9. ` wyjście 1 `: Kończy skrypt z kodem zakończenia ` 1 `.
    10. ` Być `: Oznacza koniec drugiego ` jeśli` oświadczenie.
    11. ` echo Puste pliki w katalogu $: `: Jeśli do tej pory wszystko było w porządku, w tej linii zostanie wyświetlony komunikat wskazujący, że skrypt wyświetli listę pustych plików w określonym katalogu.
    12. ` znajdź katalog $ -typ f -pusty `: Ta linia używa ` znajdować ` polecenie wyszukiwania pustych plików (` -pusty `) typu zwykłe pliki (` -wpisz f `) w określonym katalogu. Następnie wyświetla listę tych pustych plików.
    Znajdowanie pustych plików

    Znajdowanie pustych plików

    Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/

    25) Jaki jest cel polecenia read w skryptach powłoki?

    Polecenie read w skryptach powłoki pozwala skryptowi poprosić Cię o informacje. To tak, jakby komputer zadał Ci pytanie i czekał na Twoją odpowiedź. Jest to przydatne w przypadku skryptów, które wymagają wpisania czegoś lub gdy skrypt musi pracować z informacjami z plików. Polecenie read pomaga skryptowi zatrzymać się i poczekać na to, co wpiszesz, a następnie może wykorzystać te informacje do wykonania dalszych czynności w skrypcie.

    Składnia polecenia odczytu:

    read variable_name>

    Przykład : Jeśli chcemy przyjąć nazwę jako dane wejściowe od użytkownika, aby ją wydrukować.

    #!/bin/bash
    echo Proszę podać swoje imię:
    przeczytaj imię
    echo Witaj, $imie!

    453

    czytaj imię

    Podsumowując, polecenie read służy do przechwytywania danych wprowadzanych przez użytkownika lub danych z plików w skryptach powłoki, dzięki czemu skrypty są bardziej interaktywne i wszechstronne.

    26) Napisz skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

    Oto skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

    #!/bin/bash
    katalog = 1 $ ″
    if [ -z $katalog ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być

    Jeśli [ ! -d $katalog]; Następnie

    echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
    wyjście 1
    Być

    katalog $ CD || wyjście 1

    dla pliku w *; Do
    jeśli [ -f $plik ]; Następnie
    nowa nazwa=$(echo $plik | tr „A-Z” „a-z”)
    [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa
    Być
    zrobione

    Wyjaśnienie:

    1. #!/bin/bash : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. katalog = 1 $ ″ : Ta linia przypisuje pierwszy argument wiersza poleceń do katalogu zmiennych.
    3. if [ -z $katalog ]; Następnie : Ta linia sprawdza, czy zmienna katalogu jest pusta (podczas uruchamiania skryptu nie podano żadnego argumentu).
    4. echo Użycie: $0 : Jeśli katalog jest pusty, w tej linii zostanie wydrukowana informacja o użyciu zawierająca nazwę skryptu ($0).
    5. wyjście 1 : Ta linia kończy skrypt z kodem zakończenia 1, wskazującym, że wystąpił błąd.
    6. F i: Oznacza to koniec pierwszej instrukcji if.
    7. Jeśli [ ! -d $katalog]; Następnie : Ta linia sprawdza, czy podany katalog nie istnieje (-d sprawdza katalog).
    8. echo Błąd: „katalog $” nie jest prawidłowym katalogiem. : Jeśli określony katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
    9. wyjście 1 : Opuszcza skrypt z kodem wyjścia 1.
    10. Być : Oznacza koniec drugiej instrukcji if.
    11. katalog $ CD || wyjście 1 : Zmienia bieżący katalog roboczy na określony katalog. Jeśli zmiana katalogu nie powiedzie się (np. katalog nieistniejący), skrypt zakończy działanie z kodem błędu.
    12. dla pliku w *; Do: I dla pliku w *; Do: inicjuje pętlę, która iteruje po wszystkich elementach w bieżącym katalogu (* pasuje do wszystkich nazw plików).
    13. jeśli [ -f $plik ]; Następnie : Sprawdza, czy bieżący element iteracji pętli jest zwykłym plikiem (-f sprawdza zwykły plik).
    14. nowa nazwa=$(echo $plik | tr „A-Z” „a-z”) : Konwertuje bieżącą nazwę pliku ($file) na małe litery za pomocą polecenia tr i zapisuje wynik w zmiennej newname.
    15. [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa : porównuje oryginalną nazwę pliku z nową nazwą pliku zawierającą małe litery. Jeśli są różne, zmienia nazwę pliku za pomocą polecenia mv.
    16. Być : Oznacza koniec wewnętrznej instrukcji if.
    17. zrobione : Oznacza koniec pętli.

    454

    Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/test

    27) Jak można używać operacji arytmetycznych w skrypcie powłoki?

    Operacje arytmetyczne można wykonywać w skrypcie powłoki przy użyciu różnych wbudowanych metod. Powłoka zapewnia mechanizmy prostych obliczeń arytmetycznych przy użyciu rozwinięcia arytmetycznego, takie jak:

    1. Rozszerzenie arytmetyczne ($((…)))
    2. Używanie polecenia wyraż
    3. Używanie polecenia let

    Oto nasz skrypt powłoki wyjaśniający wszystkie trzy metody operacji arytmetycznych.

    #!/bin/bash
    liczba1=10
    liczba2=5

    #Rozwinięcie arytmetyczne ($((…)))

    wynik=$((liczba1 + liczba2))
    echo Suma: $wynik

    #Używanie polecenia wyraż

    suma=$(wyrażenie $num1 + $num2)
    echo Suma: $suma

    #Używanie polecenia let

    niech suma = liczba1 + liczba2
    echo Suma: $suma

    Wyjaśnienie:

    1. `#!/bin/bash` : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. `liczba1=10` i ` liczba2=5` : Linie te przypisują wartości 10 i 5 zmiennym ` numer1 ` i ` liczba2 `, odpowiednio.
    3. `#Rozwinięcie arytmetyczne ($((…)))` : To jest komentarz wskazujący początek sekcji demonstrującej rozwinięcie arytmetyczne.
    4. `wynik=$((liczba1 + liczba2))` : W tej linii zastosowano rozwinięcie arytmetyczne do obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` wynik ` zmienna.
    5. `echo Suma: $wynik` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` wynik ` zmienna.
    6. `#Używanie polecenia wyrażenia` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` wyr ` polecenie wykonywania operacji arytmetycznych.
    7. `suma=$(wyrażenie $num1 + $num2)` : Ta linia używa ` wyr ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` suma ` zmienna. Należy pamiętać, że ` wyr Polecenie ` wymaga spacji wokół operatorów.
    8. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
    9. `#Używanie polecenia let` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` pozwalać ` polecenie wykonywania operacji arytmetycznych.
    10. `niech suma = liczba1 + liczba2″` : Ta linia używa ` pozwalać ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przypisuje wynik do ` suma ` zmienna. ` pozwalać Polecenie ` nie wymaga spacji wokół operatorów.
    11. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
    arytmetyka

    arytmetyka

    28) Utwórz skrypt sprawdzający, czy host sieciowy jest osiągalny.

    Oto prosty skrypt powłoki, który używa polecenia ping do sprawdzenia, czy host sieciowy jest osiągalny:

    #!/bin/bash
    gospodarz = 1 $ ″
    jeśli [ -z $host ]; Następnie
    echo Użycie: $0
    wyjście 1
    Być
    ping -c 4 $host

    jeśli [$? -równ. 0]; Następnie
    echo $host jest osiągalny.
    w przeciwnym razie
    echo $host jest nieosiągalny.
    Być

    Wyjaśnienie:

    1. Jako argument przyjmuje nazwę hosta lub adres IP i sprawdza, czy argument został podany.
    2. Jeśli nie podano żadnego argumentu, wyświetla komunikat o użyciu i kończy działanie.
    3. Używa polecenia ping z opcją -c 4 do wysyłania czterech żądań echa ICMP do określonego hosta.
    4. Po uruchomieniu polecenia ping sprawdza status wyjścia ($?). Jeśli status wyjścia wynosi 0, oznacza to, że host jest osiągalny i skrypt wyświetla komunikat o powodzeniu. W przeciwnym razie drukuje komunikat o błędzie.

    456

    Notatka : Musimy podać nazwę hosta jako argument podczas uruchamiania skryptu. Tutaj użyliśmy google.com

    29) Napisz skrypt powłoki, aby znaleźć największy element w tablicy:

    Oto skrypt powłoki umożliwiający znalezienie największego elementu w tablicy.

    #!/bin/bash
    # Zadeklaruj tablicę
    tablica=(3 56 24 89 67)

    # Zainicjuj zmienną, aby przechowywać maksymalną wartość, zaczynając od pierwszego elementu

    max=${tablica[0]}

    # Iteruj po tablicy

    dla liczby w ${tablica[@]}; Do

    # Porównaj każdy element z bieżącym maksimum

    jeśli ((liczba> maks.)); Następnie
    maks.=$liczba
    Być
    zrobione

    # Wydrukuj wartość maksymalną

    echo Maksymalny element tablicy to: $max

    Wyjaśnienie:

    1. ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.
    2. ` tablica=(3 56 24 89 67) `: Tablica jest zadeklarowana i zainicjowana wartościami.
    3. ` max=${tablica[0]} `: `max` jest inicjalizowane pierwszym elementem tablicy.
    4. ` dla liczby w ${tablica[@]}; Do `: Pętla „for” służy do iteracji po elementach tablicy.
    5. ` jeśli ((liczba> maks.)); Następnie `: Instrukcja `if` sprawdza, czy bieżący element `num` jest większy od bieżącego maksimum `max`.
    6. ` max=$num`: Jeśli`num ` jest większe niż `max`, `max` jest aktualizowane o wartość num.
    7. ` zrobione `: Pętla „for” jest zamknięta.
    8. ` echo Maksymalny element tablicy to: $max `: Na koniec skrypt wypisuje maksymalną wartość znalezioną w tablicy.
    461

    największa liczba

    30) Napisz skrypt obliczający sumę elementów w tablicy.

    #!/bin/bash

    # Zadeklaruj tablicę

    tablica=(1 65 22 19 94)

    # Zainicjuj zmienną, aby zapisać sumę

    suma=0

    # Iteruj po tablicy i dodaj każdy element do sumy

    dla liczby w ${tablica[@]}; Do
    rano=$((rano + rano))
    zrobione

    # Wydrukuj sumę

    echo Suma elementów tablicy wynosi: $sum

    Wyjaśnienie:

    ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.

    ` tablica=(1 65 22 19 94) `: Tablica jest zadeklarowana i zainicjowana wartościami.

    ` suma=0 `:` suma ` jest inicjalizowane na zero, aby przechowywać sumę elementów.

    ` dla liczby w ${tablica[@]}; Do `: A` Do Pętla ` służy do iteracji po elementach tablicy.

    ` rano=$((rano + rano)) `: Wewnątrz pętli każdy element ` na jednego ` dodaje się do ` suma ` zmienna.

    ` zrobione `: ` Do ` pętla jest zamknięta.

    `echo Suma elementów tablicy wynosi: $sum`: Na koniec skrypt wypisuje sumę wszystkich elementów tablicy.

    462

    Suma elementów

    Dowiedz się więcej o skryptach powłoki

    Wniosek

    Wszyscy maniacy wiemy, że skrypt powłoki jest bardzo przydatny w zwiększaniu produktywności pracy, a także oszczędzaniu czasu. Tak więc w tym artykule omówiliśmy 30 bardzo przydatnych i najbardziej oszukańczych przykładów skryptów powłoki . Mamy nadzieję, że ten kompletny przewodnik na temat przykładowych skryptów powłoki pomoże Ci zrozumieć wszystko na temat skryptów powłoki.



    ).
  5. wyjście 1 : Ta linia kończy skrypt z kodem zakończenia 1, wskazującym, że wystąpił błąd.
  6. F i: Oznacza to koniec pierwszej instrukcji if.
  7. Jeśli [ ! -d $katalog]; Następnie : Ta linia sprawdza, czy podany katalog nie istnieje (-d sprawdza katalog).
  8. echo Błąd: „katalog $” nie jest prawidłowym katalogiem. : Jeśli określony katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. wyjście 1 : Opuszcza skrypt z kodem wyjścia 1.
  10. Być : Oznacza koniec drugiej instrukcji if.
  11. katalog $ CD || wyjście 1 : Zmienia bieżący katalog roboczy na określony katalog. Jeśli zmiana katalogu nie powiedzie się (np. katalog nieistniejący), skrypt zakończy działanie z kodem błędu.
  12. dla pliku w *; Do: I dla pliku w *; Do: inicjuje pętlę, która iteruje po wszystkich elementach w bieżącym katalogu (* pasuje do wszystkich nazw plików).
  13. jeśli [ -f $plik ]; Następnie : Sprawdza, czy bieżący element iteracji pętli jest zwykłym plikiem (-f sprawdza zwykły plik).
  14. nowa nazwa=$(echo $plik | tr „A-Z” „a-z”) : Konwertuje bieżącą nazwę pliku ($file) na małe litery za pomocą polecenia tr i zapisuje wynik w zmiennej newname.
  15. [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa : porównuje oryginalną nazwę pliku z nową nazwą pliku zawierającą małe litery. Jeśli są różne, zmienia nazwę pliku za pomocą polecenia mv.
  16. Być : Oznacza koniec wewnętrznej instrukcji if.
  17. zrobione : Oznacza koniec pętli.

454

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/test

27) Jak można używać operacji arytmetycznych w skrypcie powłoki?

Operacje arytmetyczne można wykonywać w skrypcie powłoki przy użyciu różnych wbudowanych metod. Powłoka zapewnia mechanizmy prostych obliczeń arytmetycznych przy użyciu rozwinięcia arytmetycznego, takie jak:

  1. Rozszerzenie arytmetyczne ($((…)))
  2. Używanie polecenia wyraż
  3. Używanie polecenia let

Oto nasz skrypt powłoki wyjaśniający wszystkie trzy metody operacji arytmetycznych.

#!/bin/bash
liczba1=10
liczba2=5

#Rozwinięcie arytmetyczne ($((…)))

wynik=$((liczba1 + liczba2))
echo Suma: $wynik

#Używanie polecenia wyraż

suma=$(wyrażenie $num1 + $num2)
echo Suma: $suma

#Używanie polecenia let

niech suma = liczba1 + liczba2
echo Suma: $suma

Wyjaśnienie:

  1. `#!/bin/bash` : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. `liczba1=10` i ` liczba2=5` : Linie te przypisują wartości 10 i 5 zmiennym ` numer1 ` i ` liczba2 `, odpowiednio.
  3. `#Rozwinięcie arytmetyczne ($((…)))` : To jest komentarz wskazujący początek sekcji demonstrującej rozwinięcie arytmetyczne.
  4. `wynik=$((liczba1 + liczba2))` : W tej linii zastosowano rozwinięcie arytmetyczne do obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` wynik ` zmienna.
  5. `echo Suma: $wynik` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` wynik ` zmienna.
  6. `#Używanie polecenia wyrażenia` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` wyr ` polecenie wykonywania operacji arytmetycznych.
  7. `suma=$(wyrażenie $num1 + $num2)` : Ta linia używa ` wyr ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` suma ` zmienna. Należy pamiętać, że ` wyr Polecenie ` wymaga spacji wokół operatorów.
  8. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
  9. `#Używanie polecenia let` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` pozwalać ` polecenie wykonywania operacji arytmetycznych.
  10. `niech suma = liczba1 + liczba2″` : Ta linia używa ` pozwalać ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przypisuje wynik do ` suma ` zmienna. ` pozwalać Polecenie ` nie wymaga spacji wokół operatorów.
  11. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
arytmetyka

arytmetyka

28) Utwórz skrypt sprawdzający, czy host sieciowy jest osiągalny.

Oto prosty skrypt powłoki, który używa polecenia ping do sprawdzenia, czy host sieciowy jest osiągalny:

#!/bin/bash
gospodarz = 1 $ ″
jeśli [ -z $host ]; Następnie
echo Użycie:

W przypadku wszystkich dystrybucji Linuksa skrypt powłoki jest jak magiczna różdżka, która automatyzuje proces, oszczędza czas użytkowników i zwiększa produktywność. Ten samouczek dotyczący skryptowania wprowadzi Cię w ponad 25 przykładów tworzenia skryptów.

Zanim jednak przejdziemy do tematu skrypty powłoki przykłady, przyjrzyjmy się skryptowi powłoki i rzeczywistym przypadkom użycia skryptów powłoki.

Co to jest skrypt powłoki?

Cóż, skorupa jest interfejs wiersza polecenia ( interpreter wiersza poleceń ), który działa w oknie tekstowym, w którym użytkownicy mogą zarządzać poleceniami powłoki i je wykonywać. Z drugiej strony proces pisania zestawu poleceń do wykonania w systemie Linux. Plik zawierający takie instrukcje nazywany jest skryptem bash.

Zastosowania skryptów powłoki

Poniżej znajduje się kilka typowych zastosowań skryptu powłoki:

  • Automatyzacja zadań – Można go używać do automatyzacji powtarzalnych zadań, takich jak regularne tworzenie kopii zapasowych i zadania instalacji oprogramowania.
  • Dostosowywanie - Można używać skryptów powłoki do projektowania środowiska wiersza poleceń i łatwego wykonywania zadań zgodnie z potrzebami.
  • Zarządzanie plikami - Skryptów powłoki można również używać do zarządzania plikami i katalogami oraz manipulowania nimi, na przykład przenoszenia, kopiowania, zmiany nazwy lub usuwania plików.

Przykłady skryptów powłoki w systemie Linux

1) Co oznacza shebang (#!) na początku skryptu powłoki?

The shebang (#!) na początku skryptu wskazuje interpreter, który powinien zostać użyty do wykonania skryptu. Mówi systemowi, która powłoka lub interpreter powinien interpretować polecenia skryptu.

Na przykład: Załóżmy, że mamy skrypt o nazwie mójscript.sh napisane w powłoce Bash:

szulernia

szulernia

W tym przykładzie:

  • Znak #!/bin/bash na początku skryptu wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  • Polecenia echo służą do drukowania komunikatów na terminalu.

2) Jak uruchomić skrypt powłoki z wiersza poleceń?

Aby uruchomić skrypt powłoki z wiersza poleceń, musimy wykonać następujące kroki:

  • Upewnij się, że plik skryptu ma uprawnienia do wykonywania, używając polecenie chmod :
chmod +x myscript.sh>
  • Wykonaj skrypt, używając jego nazwy pliku:
./myscript.sh>

Tutaj musisz wymienić myscript.sh z twoją nazwą skryptu.

3) Napisz skrypt powłoki, który wypisuje plik techcodeview.com na terminalu.

Utwórz nazwę skryptu `myscript.sh` (używamy ` ponieważ ` edytor, możesz wybrać dowolny edytor)

vim myscript.sh>

#!/bin/bash
# Ten skrypt drukuje plik techcodeview.com na terminalu
echo techcodeview.com

Nazwa wydruku

Nazwa wydruku

Sprawiamy, że nasz skrypt jest wykonywalny, używając `chmod +x`, a następnie wykonujemy go za pomocą `./myscipt.sh` i uzyskujemy żądane wyjście techcodeview.com.

4) Wyjaśnij cel polecenia echo w skryptach powłoki.

The polecenie echa służy do wyświetlania tekstu lub zmiennych na terminalu. Jest powszechnie używany do drukowania komunikatów, wartości zmiennych i generowania wyników programu.

434

polecenie echa

W tym przykładzie wykonaliśmy `echo` bezpośrednio na terminalu, ponieważ działa to tak samo w skrypcie powłoki.

5) Jak przypisać wartość do zmiennej w skrypcie powłoki?

Zmiennym przypisuje się wartości za pomocą operatora przypisania =.

Na przykład:

#!/bin/bash
# Przypisywanie wartości do zmiennej
imię = Jayesh
wiek=21
echo $imię $wiek

Wyjaśnienie:

  • Zmiennej nazwie przypisano wartość Jayesh.
  • Zmiennej wiek przypisano wartość 21.
  • echo służy do drukowania, a `$nazwa` `$wiek` służy do wywoływania wartości przechowywanej w zmiennych.

435

6) Napisz skrypt powłoki, który jako dane wejściowe pobiera nazwę użytkownika i wita go.

Utwórz skrypt o nazwie `example.sh`.

#!/bin/bash
# Zapytaj użytkownika o jego imię i nazwisko
echo Jak masz na imię?
przeczytaj imię
# Powitaj użytkownika
echo Witaj, $imie! Miło mi cię poznać.

Wyjaśnienie:

  • #!/bin/bash: To jest linia Shebang. Mówi systemowi, aby użył interpretera Bash do wykonania skryptu.
  • # Zapytaj użytkownika o jego imię i nazwisko: To jest komentarz. Zapewnia kontekst dotyczący nadchodzącego kodu. Komentarze są ignorowane przez tłumacza.
  • echo Jak się nazywasz?: Polecenie echo służy do wyświetlania tekstu w cudzysłowie na terminalu.
  • read name: Polecenie read czeka, aż użytkownik wprowadzi tekst i zapisuje go w nazwie zmiennej.
  • echo Witaj, $imię! Miło cię poznać.: Ta linia używa polecenia echo do wydrukowania wiadomości powitalnej zawierającej wartość zmiennej name, która została pobrana z danych wprowadzonych przez użytkownika.

436

7) Jak dodać komentarze do skryptu powłoki?

Komentarze w skryptach powłoki służą do zapewnienia wyjaśnień lub kontekstu kodu. Są one ignorowane przez tłumacza i są przeznaczone wyłącznie dla ludzi czytających scenariusz. Możesz dodawać komentarze, używając symbolu #.

#!/bin/bash
# To jest komentarz wyjaśniający cel skryptu
powtórz GFG

8) Utwórz skrypt powłoki, który sprawdza, czy w bieżącym katalogu istnieje plik.

Oto skrypt sprawdzający, czy w bieżącym katalogu istnieje plik o nazwie example.txt:

#!/bin/bash
plik=przykład.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
echo Plik istnieje: $plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=example.txt: Ta linia definiuje plik zmiennych i przypisuje mu wartość example.txt. Możesz zastąpić tę nazwę plikiem, który chcesz sprawdzić.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Warunek [ -e $plik ] sprawdza, czy plik określony przez wartość zmiennej pliku istnieje. Flaga -e służy do sprawdzania istnienia pliku.
  4. echo Plik istnieje: $plik: Jeśli warunek jest spełniony (tj. plik istnieje), w tej linii zostanie wyświetlony komunikat wskazujący, że plik istnieje, wraz z nazwą pliku.
  5. else: Jeśli warunek jest fałszywy (tzn. plik nie istnieje), skrypt wykonuje kod z gałęzi else.
  6. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że określony plik nie został znaleziony, wraz z jego nazwą.
  7. fi: Ta linia oznacza koniec instrukcji if.
Znalezienie pliku

Znalezienie pliku

9) Jaka jest różnica pomiędzy pojedynczymi cudzysłowami („) i podwójnymi cudzysłowami () w skryptach powłoki?

Pojedyncze cudzysłowy („) i podwójne cudzysłowy () służą do umieszczania ciągów znaków w skryptach powłoki, ale zachowują się inaczej:

  • Pojedyncze cudzysłowy: wszystko pomiędzy pojedynczymi cudzysłowami jest traktowane jako ciąg znaków. Nazwy zmiennych i większość znaków specjalnych nie są rozwijane.
  • Podwójne cudzysłowy: Zmienne i niektóre znaki specjalne w podwójnych cudzysłowach są rozwijane. Treść podlega podstawieniu zmiennych i podstawieniu poleceń.

#!/bin/bash

abcd=Witam
echo „$abcd” # Dane wyjściowe: $abcd
echo $abcd # Wynik: Witam

10) Jak można używać argumentów wiersza poleceń w skrypcie powłoki?

Argumenty wiersza poleceń to wartości dostarczane do skryptu podczas jego wykonywania. Dostęp do nich można uzyskać w skrypcie za pomocą specjalnych zmiennych, takich jak 1 $, 2 $ itd., gdzie 1 $ reprezentuje pierwszy argument, 2 $ reprezentuje drugi argument i tak dalej.

Na przykład: Jeśli nasza nazwa skryptu w `example.sh`

#!/bin/bash

echo Nazwa skryptu: $0
echo Pierwszy argument: $1
echo Drugi argument: 2 $

Jeśli uruchomimy skrypt z `.example.sh hello_1 hello_2`, wyświetli się:

argumenty cli

argumenty cli

11) Jak używać pętli for do iteracji po liście wartości?

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

owoce=(jabłko banan wiśnia data)
dla owoców w ${fruits[@]}; Do
echo Aktualny owoc: $owoc
zrobione

Wyjaśnienie:

Linia `fruits=` tworzy tablicę o nazwie owoce zawierającą cztery elementy: jabłko, banan, wiśnia i data.

  • dla owoców w ${fruits[@]}; do: Ta linia rozpoczyna pętlę for. Oto znaczenie każdej części:
  • dla owoców: deklaruje zmienną pętli zwaną owocami. W każdej iteracji pętli Fruit będzie przechowywać wartość bieżącego elementu z tablicy Fruits.
  • ${fruits[@]}: To jest rozwinięcie tablicy, które pobiera wszystkie elementy z tablicy Fruits. Składnia ${…} gwarantuje, że każdy element będzie traktowany jako oddzielny element.
  • do: To słowo kluczowe oznacza początek treści pętli.
  • echo Bieżący owoc: $owoc: Wewnątrz pętli w tej linii używane jest polecenie echo do wyświetlenia bieżącej wartości zmiennej owocowej pętli. Wypisuje komunikat w rodzaju Bieżący owoc: jabłko dla każdego owocu w tablicy.
  • gotowe: To słowo kluczowe oznacza koniec treści pętli. Informuje skrypt, że pętla została zakończona.
dla pętli

dla pętli

12) Napisz skrypt powłoki, który oblicza sumę liczb całkowitych od 1 do N za pomocą pętli.

Utwórz nazwę skryptu `example.sh`.

#!/bin/bash

echo Podaj liczbę (N):
przeczytaj N
suma=0
for (( i=1; i<=$N; i++ )); Do
suma=$((suma + i))
zrobione
echo Suma liczb całkowitych od 1 do $N to: $sum

Wyjaśnienie:
Skrypt rozpoczyna się od prośby o wprowadzenie liczby (N) za pomocą polecenia read. Ta liczba określi, ile razy pętla zostanie uruchomiona.

  1. Suma zmiennej jest inicjowana na 0. Ta zmienna będzie śledzić sumę liczb całkowitych.
  2. Pętla for zaczyna się od for (( i=1; i<=$N; i++ )). Ta struktura pętli służy do powtarzania zestawu działań określoną liczbę razy, w tym przypadku od 1 do wartości N.
  3. Wewnątrz pętli dzieją się następujące rzeczy:
    • i=1 ustawia zmienną pętli i na 1 na początku każdej iteracji.
    • Warunek pętli i<=$N sprawdza, czy i jest nadal mniejsze lub równe podanej liczbie N.
    • Jeżeli warunek jest spełniony, wykonywane jest ciało pętli.
    • sum=$((suma + i)) oblicza nową wartość sumy, dodając do niej bieżącą wartość i. Spowoduje to dodanie liczb całkowitych od 1 do bieżącej wartości i.
  4. Po każdej iteracji i++ zwiększa wartość i o 1.
  5. Pętla działa dopóki warunek i<=$N nie stanie się fałszywy (kiedy i stanie się większe niż N).
  6. Po zakończeniu pętli skrypt wyświetla sumę liczb całkowitych od 1 do wprowadzonej liczby N.

439

13) Utwórz skrypt, który wyszukuje określone słowo w pliku i zlicza jego wystąpienia.

Utwórz nazwę skryptu `word_count.sh`

#!/bin/bash

echo Wpisz szukane słowo:
przeczytaj słowo_celowe
echo Podaj nazwę pliku:
przeczytaj nazwę pliku
liczba=$(grep -o -w $słowo_docelowe $nazwa pliku | wc -l)
echo Słowo „$target_word” pojawia się $count razy w „$filename”.

Wyjaśnienie:

  • echo Wpisz słowo do wyszukania:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o wprowadzenie słowa, którego chce szukać w pliku.
  • read target_word: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie target_word.
  • echo Wpisz nazwę pliku:: W tej linii zostanie wyświetlony komunikat proszący użytkownika o podanie nazwy pliku, który chce przeszukać.
  • read filename: Ta linia odczytuje dane wejściowe dostarczone przez użytkownika i zapisuje je w zmiennej o nazwie filename.
  • count=$(grep -o -w $target_word $nazwa pliku | wc -l): Ta linia wykonuje główną pracę skryptu. Rozłóżmy to dalej:
    • grep -o -w $słowo_docelowe $nazwa pliku: Ta część polecenia wyszukuje wystąpienia słowa_docelowego w określonej nazwie pliku. Opcje -o i -w zapewniają, że zliczane będą tylko dopasowania całych słów.
    • |: To jest potok, który pobiera dane wyjściowe poprzedniego polecenia i wysyła je jako dane wejściowe do następnego polecenia.
    • wc -l: Ta część polecenia wykorzystuje polecenie wc do zliczenia liczby wierszy na wejściu. Opcja -l specjalnie zlicza linie.
    • Całe polecenie oblicza liczbę wystąpień słowa_docelowego w pliku i przypisuje tę liczbę do zmiennej coun

441

14) Wyjaśnij różnice pomiędzy standardowym wyjściem (stdout) i standardowym wyjściem błędów (stderr).

Główna różnica między standardowym wyjściem (stdout) a standardowym błędem (stderr) jest następująca:

  • Standardowe wyjście (stdout): Jest to domyślny strumień wyjściowy, do którego trafiają zwykłe dane wyjściowe polecenia. Domyślnie jest wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą>.
  • Błąd standardowy (stderr): Jest to strumień wyjściowy komunikatów o błędach i ostrzeżeń. Domyślnie jest również wyświetlany na terminalu. Możesz przekierować go do pliku za pomocą 2>.

15) Wyjaśnij koncepcję instrukcji warunkowych w skryptach powłoki.

Instrukcje warunkowe w skryptach powłoki pozwalają nam podejmować decyzje i kontrolować przebieg naszego scenariusza w oparciu o określone warunki. Umożliwiają one naszemu skryptowi wykonywanie różnych zestawów poleceń w zależności od tego, czy dany warunek jest prawdziwy, czy fałszywy. Podstawowymi instrukcjami warunkowymi w skryptach powłoki są instrukcja if, instrukcja elif (opcjonalna) i instrukcja else (opcjonalna).

Oto podstawowa struktura instrukcji warunkowej w skrypcie powłoki:

jeśli [warunek]; Następnie
# Polecenia do wykonania, jeśli warunek jest prawdziwy
elif [inny_warunek]; Następnie
# Polecenia do wykonania, jeśli inny_warunek jest prawdziwy (opcjonalnie)
w przeciwnym razie
# Polecenia do wykonania, jeśli żaden z warunków nie jest spełniony (opcjonalnie)
Być

Wyjaśnienie:

  • [warunek] = Polecenie, które ocenia warunek i zwraca prawdziwy (0) lub fałszywy (niezerowy) status wyjścia.
  • then = Jest to słowo kluczowe wskazujące, że następujące po nim polecenia zostaną wykonane, jeśli warunek ma wartość true.
  • elif = (skrót od else if) Jest to sekcja, która pozwala nam określić dodatkowe warunki do sprawdzenia.
  • else = jest to sekcja zawierająca polecenia, które zostaną wykonane, jeśli żaden z warunków nie zostanie spełniony.
  • fi = Jest to słowo kluczowe oznaczające koniec bloku warunkowego.

16) Jak odczytać linie z pliku w skrypcie powłoki?

Do czytaj linie z pliku w skrypcie powłoki, możemy użyć różnych metod, ale jednym z powszechnych podejść jest użycie pętli while w połączeniu z poleceniem read. Oto jak możemy to zrobić:

#!/bin/bash
plik=/home/jayeshkumar/jayesh.txt
# Sprawdź, czy plik istnieje
if [ -e $plik ]; Następnie
podczas gdy IFS= czytaj -r linia; Do
echo Odczytana linia: $line
# Dodaj tutaj logikę przetwarzania
gotowe <$plik
w przeciwnym razie
echo Nie znaleziono pliku: $file
Być

Wyjaśnienie:

  1. #!/bin/bash: To jest linia, która określa interpreter (/bin/bash), który ma być używany do uruchamiania skryptu.
  2. file=/home/jayeshkumar/jayesh.txt: Ta linia definiuje plik zmiennych i przypisuje pełną ścieżkę do pliku jayesh.txt w katalogu /home/jayeshkumar. Zmień tę ścieżkę, aby odpowiadała rzeczywistej ścieżce pliku, który chcesz przeczytać.
  3. if [ -e $plik ]; następnie: Ta linia rozpoczyna instrukcję if. Sprawdza, czy plik określony przez zmienną $file istnieje. Flaga -e sprawdza istnienie pliku.
  4. podczas gdy IFS= czytaj -r linia; do: Ta linia inicjuje pętlę while, która odczytuje linie z pliku.
    • IFS=: IFS (wewnętrzny separator pól) jest ustawiony na pustą wartość, aby zachować spacje początkowe i końcowe.
    • read -r line: odczytuje bieżącą linię z pliku i zapisuje ją w linii zmiennej.
  5. echo Odczyt linii: $line: Ta linia drukuje zawartość linii, która została odczytana z pliku. Zmienna $line zawiera zawartość bieżącej linii.
  6. # Dodaj tutaj logikę przetwarzania: To jest komentarz zastępczy, w którym możesz dodać własną logikę przetwarzania każdej linii. Na przykład możesz przeanalizować wiersz, wyodrębnić informacje lub wykonać określone działania w oparciu o treść.
  7. gotowe <$plik: Oznacza to koniec pętli while. Plik < $przekierowuje zawartość pliku do odczytu przez pętlę.
  8. else: Jeśli plik nie istnieje (warunek w instrukcji if jest fałszywy), skrypt wykonuje kod z gałęzi else.
  9. echo Nie znaleziono pliku: $plik: Ta linia wyświetla komunikat o błędzie wskazujący, że nie znaleziono określonego pliku.
  10. fi: Ta linia oznacza koniec instrukcji if.
odczytanie pliku

odczytanie pliku

Tutaj użyliśmy ` pw ` polecenie, aby uzyskać ścieżkę bieżącego katalogu.

17) Napisz w skrypcie powłoki funkcję obliczającą silnię podanej liczby.

Oto skryptobliczyć silniędanego numeru.

#!/bin/bash
# Zdefiniuj funkcję do obliczenia silni
oblicz_czynnik() {
liczba = 1 USD
fakt=1
for ((i=1; i<=num; i++)); Do
fakt=$((fakt * i))
zrobione
powtórz fakt
}
# Poproś użytkownika o wprowadzenie numeru
echo Wpisz liczbę:
przeczytaj numer_wejściowy
# Wywołaj funkcjękalkuluj_czynnikową z numerem wejściowym
Factorial_result=$(oblicz_czynnik $input_num)
# Wyświetl wynik silni
echo Silnia wartości $input_num to: $factorial_result

Wyjaśnienie:

  1. Skrypt zaczyna się od linii #!/bin/bash określającej interpreter.
  2. call_factorial() jest zdefiniowana jako funkcja. Przyjmuje jeden argument, num, który jest liczbą, dla której należy obliczyć silnię.
  3. Wewnątrz funkcji fakt jest inicjowany na 1. Ta zmienna będzie przechowywać wynik silni.
  4. Pętla for iteruje od 1 do podanej liczby (num). W każdej iteracji mnoży bieżącą wartość faktu przez indeks pętli i.
  5. Po zakończeniu pętli zmienna faktu zawiera obliczoną silnię.
  6. Skrypt monituje użytkownika o wprowadzenie liczby za pomocą funkcji read.
  7. Funkcjakalkuluj_czynnik jest wywoływana z liczbą podaną przez użytkownika, a wynik jest zapisywany w zmiennejfactorial_result.
  8. Na koniec skrypt wyświetla obliczony wynik silni.
Silnia

Silnia

18) Jak radzisz sobie z sygnałami takimi jak Ctrl+C w skrypcie powłoki?

W skrypcie powłoki możesz obsługiwać sygnały takie jak Ctrl+C (znane również jako SIGINT) za pomocą polecenia trap. Ctrl+C generuje sygnał SIGINT, gdy użytkownik go naciśnie, aby przerwać działający skrypt lub program. Używając polecenia trap, możesz określić działania, które mają zostać podjęte po odebraniu określonego sygnału. Oto jak obsługujesz sygnały takie jak Ctrl+C w skrypcie powłoki:

#!/bin/bash
posprzątać() {
echo Skrypt przerwany. Wykonywanie czyszczenia…
# Dodaj tutaj swoje działania czyszczące
wyjście 1
}
# Ustaw pułapkę, aby wywołać funkcję czyszczenia po odebraniu Ctrl+C (SIGINT).
czyszczenie pułapek SIGINT
# Reszta skryptu
echo Bieganie…
spać 10
echo Zakończono.

Obsługa sygnałów jest ważna, aby skrypty były niezawodne i sprawnie obsługiwały nieoczekiwane zakłócenia. Możesz dostosować funkcję czyszczenia do swoich konkretnych potrzeb, takich jak zamykanie plików, zatrzymywanie procesów lub rejestrowanie informacji przed zakończeniem skryptu.

Wyjaśnienie:

  1. #!/bin/bash: Ta linia określa interpreter, który będzie używany do uruchamiania skryptu.
  2. cleanup() { … }: Definiuje funkcję o nazwie sprzątanie. Wewnątrz tej funkcji możesz uwzględnić wszelkie akcje, które należy wykonać w przypadku przerwania skryptu, takie jak zamknięcie plików, zwolnienie zasobów lub wykonanie innych zadań czyszczących.
  3. czyszczenie pułapek SIGINT: Polecenie pułapki służy do skonfigurowania procedury obsługi sygnału. W tym przypadku określa, że ​​po odebraniu sygnału SIGINT (Ctrl+C) powinna zostać wykonana funkcja czyszcząca.
  4. echo Działa…, śpi 10, echo Zakończono.: To tylko przykładowe polecenia symulujące wykonanie skryptu.

446

19) Utwórz skrypt, który sprawdza i usuwa zduplikowane linie w pliku tekstowym.

Oto nasz skrypt linuksowy, w którym usuniemy zduplikowane linie z pliku tekstowego.

#!/bin/bash
plik_wejściowy=plik wejściowy.txt
plik_wyjściowy=plik wyjściowy.txt
sortuj $plik_wejściowy | uniq> $plik_wyjściowy
echo Pomyślnie usunięto zduplikowane linie.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), który wskazuje, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. Zmienna input_file jest ustawiona na nazwę pliku wejściowego zawierającego zduplikowane linie (zmień tę nazwę na rzeczywistą nazwę pliku wejściowego).
  3. Zmienna plik_wyjściowy jest ustawiona na nazwę pliku wyjściowego, z którego zostaną usunięte duplikaty (zmień tę nazwę na żądaną nazwę pliku wyjściowego).
  4. Skrypt używa polecenia sort do sortowania wierszy w pliku wejściowym. Sortowanie linii zapewnia zgrupowanie zduplikowanych linii.
  5. Posortowane linie są następnie przepuszczane przez polecenie uniq, które usuwa kolejne zduplikowane linie. Dane wyjściowe tego procesu są przekierowywane do pliku wyjściowego.
  6. Po usunięciu duplikatów skrypt wyświetla komunikat o powodzeniu.
usuwanie zduplikowanych linii

usuwanie zduplikowanych linii

Tutaj używamy ` kot `, aby wyświetlić tekst znajdujący się w pliku tekstowym.

20) Napisz skrypt generujący bezpieczne losowe hasło.

Oto nasz skrypt generujący bezpieczne losowe hasło.

#!/bin/bash
# Funkcja generowania losowego hasła
wygeneruj_hasło() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Wywołaj funkcję i zapisz wygenerowane hasło
hasło=$(wygeneruj_hasło)
echo Wygenerowane hasło: $password

Uwaga: Użytkownik może odpowiednio zmienić długość hasła, zastępując cyfrę `12`.

Wyjaśnienie:

  1. Skrypt zaczyna się od shebang (#!/bin/bash), wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Funkcja generate_password służy do generowania losowego hasła. Oto jak to działa:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 dzieli przefiltrowane losowe dane na linie o szerokości 12 znaków każda.
    • head -n 1 wybiera pierwszą linię, skutecznie dając nam losową sekwencję znaków o długości 12.
  3. Do zmiennej hasła przypisywany jest wynik wywołania funkcji generate_password.
  4. Na koniec wygenerowane hasło jest wyświetlane za pomocą echa.

448

21) Napisz skrypt powłoki, który obliczy całkowity rozmiar wszystkich plików w katalogu.

Oto skrypt powłoki obliczający całkowity rozmiar wszystkich plików w katalogu.

#!/bin/bash
katalog=/ścieżka/do/twojego/katalogu
total_size=$(du -csh $katalog | grep total | awk „{print $1}”)
echo Całkowity rozmiar plików w katalogu $: $total_size

Wyjaśnienie:

  1. Skrypt zaczyna się od znaku #!/bin/bash shebang, wskazującego, że należy go interpretować przy użyciu powłoki Bash.
  2. Zmienna katalogu jest ustawiona na ścieżkę katalogu, dla którego chcesz obliczyć całkowity rozmiar pliku. Zastąp /path/to/your/directory rzeczywistą ścieżką.
  3. Polecenie du służy do szacowania wykorzystania przestrzeni plików. Stosowane opcje to:
    • -c: Wygeneruj sumę całkowitą.
    • -s: Wyświetla tylko całkowity rozmiar określonego katalogu.
    • -h: Rozmiar wydruku w formacie czytelnym dla człowieka (np. KB, MB, GB).
  4. Dane wyjściowe du są przesyłane do grep total w celu odfiltrowania linii zawierającej całkowity rozmiar.
  5. awk „{print $1}” służy do wyodrębnienia pierwszego pola (całkowitego rozmiaru) z linii.
  6. Obliczony całkowity rozmiar jest przechowywany w zmiennej total_size.
  7. Na koniec skrypt wyświetla całkowity rozmiar za pomocą echo.
Całkowity rozmiar plików

Całkowity rozmiar plików

Tutaj użyliśmy ` pw ` polecenie, aby zobaczyć bieżącą ścieżkę katalogu.

22) Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki.

Funkcja `jeśli`Staiment Oświadczenie „elif”.
Zamiar Wyjaśnij różnicę pomiędzy instrukcjami if i elif w skryptach powłoki. Zapewnia alternatywne warunki umożliwiające sprawdzenie, czy początkowy warunek if jest fałszywy.
stosowanie Używany do warunku początkowego. Używane po początkowym warunku if w celu sprawdzenia dodatkowych warunków.
liczba bloków Może mieć tylko jeden, jeśli jest blokowany. Może mieć wiele bloków elif, ale tylko jeden blok else (opcjonalnie).
Wykonanie Wykonuje blok kodu powiązany z instrukcją if, jeśli warunek jest prawdziwy. Jeśli warunek jest fałszywy, wykonywany jest blok else (jeśli występuje) (opcjonalnie). Sprawdza każdy warunek elif w kolejności. Jeśli jeden warunek elif jest prawdziwy, wykonywany jest odpowiedni blok kodu, a skrypt kończy cały blok warunkowy. Jeśli żaden z warunków elif nie jest spełniony, wykonywany jest blok else (jeśli występuje).
Struktury zagnieżdżone Można je zagnieżdżać w innych blokach if, elif lub else. Nie można go zagnieżdżać w innym bloku elif, ale można go użyć w bloku if lub else.

Rozumiemy to na przykładzie.

#!/bin/bash
liczba=5
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
w przeciwnym razie
echo $liczba nie jest większa niż 10
Być
Echo ---
jeśli [ $liczba -gt 10 ]; Następnie
echo Liczba $ jest większa niż 10
elif [$liczba -równ. 10]; Następnie
echo $liczba jest równa 10
w przeciwnym razie
echo $liczba jest mniejsza niż 10
Być

Wyjaśnienie:

W tym przykładzie pierwszy blok if sprawdza, czy liczba jest większa niż 10. Jeśli nie, wypisuje komunikat wskazujący, że liczba nie jest większa niż 10. Drugi blok z instrukcjami elif sprawdza po kolei wiele warunków, aż jeden z nich będzie prawdziwy. W tym przypadku, ponieważ wartość liczby wynosi 5, wynikiem będzie:

różnica if_elif

różnica if_elif

23) Jak używać pętli while do wielokrotnego wykonywania poleceń?

Pętla while jest używana w skryptach powłoki do wielokrotnego wykonywania zestawu poleceń, o ile określony warunek jest spełniony. Pętla kontynuuje wykonywanie poleceń, aż warunek stanie się fałszywy.

Oto podstawowa składnia pętli while:

podczas gdy [warunek]; Do
# Polecenia do wykonania
zrobione

Wyjaśnienie:

  1. Pętla „while” zaczyna się od słowa kluczowego „while”, po którym następuje warunek ujęty w nawiasy kwadratowe „[ ]”.
  2. Ciało pętli zawierające polecenia do wykonania jest ujęte w słowa kluczowe „do” i „done”.
  3. Pętla najpierw sprawdza warunek. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w treści pętli. Po wykonaniu treści pętli warunek jest ponownie sprawdzany i proces jest powtarzany, aż warunek stanie się fałszywy.

Przykład: Jeśli chcemy wydrukować liczby od 1 do 5

#!/bin/bash
licznik=1
podczas gdy [ $licznik -le 5 ]; Do
echo Numer: $licznik
licznik=$((licznik + 1))
zrobione

Wyjaśnienie:

  • Zmienna licznika jest ustawiona na 1.
  • Pętla while sprawdza, czy wartość licznika jest mniejsza lub równa 5. Dopóki ten warunek jest spełniony, pętla kontynuuje wykonywanie.
  • Wewnątrz pętli bieżąca wartość licznika jest drukowana za pomocą echo.
  • Licznik jest zwiększany o 1 za pomocą wyrażenia $((licznik + 1)).
pętla while

pętla while

24) Utwórz skrypt powłoki, który znajdzie i wyświetli listę wszystkich pustych plików w katalogu.

Skrypt powłoki, którego możesz użyć do znalezienia i wyświetlenia wszystkich pustych plików w katalogu za pomocą poleceń `find` i `stat`:

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie: $0
wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie
echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być
echo Puste pliki w katalogu $:
znajdź katalog $ -typ f -pusty

Wyjaśnienie:

  1. ` #!/bin/bash `: Nazywa się to shebang i mówi systemowi operacyjnemu, aby użył powłoki Bash do interpretacji i wykonania skryptu.
  2. ` katalog = 1 $ ″ `: Ta linia przypisuje pierwszy argument wiersza poleceń (oznaczony jako $1) do zmiennej ` informator `.
  3. ` if [ -z $katalog ]; Następnie `: Ta linia rozpoczyna instrukcję if, która sprawdza, czy ` informator ` zmienna jest pusta (-z sprawdza pusty ciąg znaków).
  4. ` echo Użycie: $0 `: Jeśli katalog jest pusty, ta linia wyświetla komunikat o użyciu, gdzie ` 0 dolarów ` oznacza nazwę skryptu.
  5. ` wyjście 1 `: Ta linia kończy skrypt z kodem zakończenia ` 1 `, wskazując błąd.
  6. ` Być `: Ta linia oznacza koniec ` Jeśli ` oświadczenie.
  7. ` Jeśli [ ! -d $katalog]; Następnie `: Spowoduje to uruchomienie kolejnej instrukcji if w celu sprawdzenia, czy podany katalog istnieje (` -D ` testuje katalog).
  8. ` echo Błąd: „katalog $” nie jest prawidłowym katalogiem. `: Jeśli podany katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. ` wyjście 1 `: Kończy skrypt z kodem zakończenia ` 1 `.
  10. ` Być `: Oznacza koniec drugiego ` jeśli` oświadczenie.
  11. ` echo Puste pliki w katalogu $: `: Jeśli do tej pory wszystko było w porządku, w tej linii zostanie wyświetlony komunikat wskazujący, że skrypt wyświetli listę pustych plików w określonym katalogu.
  12. ` znajdź katalog $ -typ f -pusty `: Ta linia używa ` znajdować ` polecenie wyszukiwania pustych plików (` -pusty `) typu zwykłe pliki (` -wpisz f `) w określonym katalogu. Następnie wyświetla listę tych pustych plików.
Znajdowanie pustych plików

Znajdowanie pustych plików

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/

25) Jaki jest cel polecenia read w skryptach powłoki?

Polecenie read w skryptach powłoki pozwala skryptowi poprosić Cię o informacje. To tak, jakby komputer zadał Ci pytanie i czekał na Twoją odpowiedź. Jest to przydatne w przypadku skryptów, które wymagają wpisania czegoś lub gdy skrypt musi pracować z informacjami z plików. Polecenie read pomaga skryptowi zatrzymać się i poczekać na to, co wpiszesz, a następnie może wykorzystać te informacje do wykonania dalszych czynności w skrypcie.

Składnia polecenia odczytu:

read variable_name>

Przykład : Jeśli chcemy przyjąć nazwę jako dane wejściowe od użytkownika, aby ją wydrukować.

#!/bin/bash
echo Proszę podać swoje imię:
przeczytaj imię
echo Witaj, $imie!

453

czytaj imię

Podsumowując, polecenie read służy do przechwytywania danych wprowadzanych przez użytkownika lub danych z plików w skryptach powłoki, dzięki czemu skrypty są bardziej interaktywne i wszechstronne.

26) Napisz skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

Oto skrypt powłoki, który konwertuje wszystkie nazwy plików w katalogu na małe litery.

#!/bin/bash
katalog = 1 $ ″
if [ -z $katalog ]; Następnie
echo Użycie: $0
wyjście 1
Być

Jeśli [ ! -d $katalog]; Następnie

echo Błąd: „katalog $” nie jest prawidłowym katalogiem.
wyjście 1
Być

katalog $ CD || wyjście 1

dla pliku w *; Do
jeśli [ -f $plik ]; Następnie
nowa nazwa=$(echo $plik | tr „A-Z” „a-z”)
[ $plik != $nowa nazwa ] && mv $plik $nowa nazwa
Być
zrobione

Wyjaśnienie:

  1. #!/bin/bash : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. katalog = 1 $ ″ : Ta linia przypisuje pierwszy argument wiersza poleceń do katalogu zmiennych.
  3. if [ -z $katalog ]; Następnie : Ta linia sprawdza, czy zmienna katalogu jest pusta (podczas uruchamiania skryptu nie podano żadnego argumentu).
  4. echo Użycie: $0 : Jeśli katalog jest pusty, w tej linii zostanie wydrukowana informacja o użyciu zawierająca nazwę skryptu ($0).
  5. wyjście 1 : Ta linia kończy skrypt z kodem zakończenia 1, wskazującym, że wystąpił błąd.
  6. F i: Oznacza to koniec pierwszej instrukcji if.
  7. Jeśli [ ! -d $katalog]; Następnie : Ta linia sprawdza, czy podany katalog nie istnieje (-d sprawdza katalog).
  8. echo Błąd: „katalog $” nie jest prawidłowym katalogiem. : Jeśli określony katalog nie istnieje, w tej linii zostanie wyświetlony komunikat o błędzie.
  9. wyjście 1 : Opuszcza skrypt z kodem wyjścia 1.
  10. Być : Oznacza koniec drugiej instrukcji if.
  11. katalog $ CD || wyjście 1 : Zmienia bieżący katalog roboczy na określony katalog. Jeśli zmiana katalogu nie powiedzie się (np. katalog nieistniejący), skrypt zakończy działanie z kodem błędu.
  12. dla pliku w *; Do: I dla pliku w *; Do: inicjuje pętlę, która iteruje po wszystkich elementach w bieżącym katalogu (* pasuje do wszystkich nazw plików).
  13. jeśli [ -f $plik ]; Następnie : Sprawdza, czy bieżący element iteracji pętli jest zwykłym plikiem (-f sprawdza zwykły plik).
  14. nowa nazwa=$(echo $plik | tr „A-Z” „a-z”) : Konwertuje bieżącą nazwę pliku ($file) na małe litery za pomocą polecenia tr i zapisuje wynik w zmiennej newname.
  15. [ $plik != $nowa nazwa ] && mv $plik $nowa nazwa : porównuje oryginalną nazwę pliku z nową nazwą pliku zawierającą małe litery. Jeśli są różne, zmienia nazwę pliku za pomocą polecenia mv.
  16. Być : Oznacza koniec wewnętrznej instrukcji if.
  17. zrobione : Oznacza koniec pętli.

454

Notatka : Musimy podać katalog jako argument podczas uruchamiania skryptu. Tutaj użyliśmy ścieżki bieżącego katalogu home/jayeshkumar/test

27) Jak można używać operacji arytmetycznych w skrypcie powłoki?

Operacje arytmetyczne można wykonywać w skrypcie powłoki przy użyciu różnych wbudowanych metod. Powłoka zapewnia mechanizmy prostych obliczeń arytmetycznych przy użyciu rozwinięcia arytmetycznego, takie jak:

  1. Rozszerzenie arytmetyczne ($((…)))
  2. Używanie polecenia wyraż
  3. Używanie polecenia let

Oto nasz skrypt powłoki wyjaśniający wszystkie trzy metody operacji arytmetycznych.

#!/bin/bash
liczba1=10
liczba2=5

#Rozwinięcie arytmetyczne ($((…)))

wynik=$((liczba1 + liczba2))
echo Suma: $wynik

#Używanie polecenia wyraż

suma=$(wyrażenie $num1 + $num2)
echo Suma: $suma

#Używanie polecenia let

niech suma = liczba1 + liczba2
echo Suma: $suma

Wyjaśnienie:

  1. `#!/bin/bash` : To jest shebang określający, że skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. `liczba1=10` i ` liczba2=5` : Linie te przypisują wartości 10 i 5 zmiennym ` numer1 ` i ` liczba2 `, odpowiednio.
  3. `#Rozwinięcie arytmetyczne ($((…)))` : To jest komentarz wskazujący początek sekcji demonstrującej rozwinięcie arytmetyczne.
  4. `wynik=$((liczba1 + liczba2))` : W tej linii zastosowano rozwinięcie arytmetyczne do obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` wynik ` zmienna.
  5. `echo Suma: $wynik` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` wynik ` zmienna.
  6. `#Używanie polecenia wyrażenia` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` wyr ` polecenie wykonywania operacji arytmetycznych.
  7. `suma=$(wyrażenie $num1 + $num2)` : Ta linia używa ` wyr ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przechowuje wynik w ` suma ` zmienna. Należy pamiętać, że ` wyr Polecenie ` wymaga spacji wokół operatorów.
  8. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
  9. `#Używanie polecenia let` : To jest komentarz wskazujący początek sekcji demonstrującej użycie ` pozwalać ` polecenie wykonywania operacji arytmetycznych.
  10. `niech suma = liczba1 + liczba2″` : Ta linia używa ` pozwalać ` polecenie obliczenia sumy ` numer1 ` i ` liczba2 ` i przypisuje wynik do ` suma ` zmienna. ` pozwalać Polecenie ` nie wymaga spacji wokół operatorów.
  11. `echo Suma: $suma` : Ta linia drukuje obliczoną sumę przy użyciu wartości zapisanej w ` suma ` zmienna.
arytmetyka

arytmetyka

28) Utwórz skrypt sprawdzający, czy host sieciowy jest osiągalny.

Oto prosty skrypt powłoki, który używa polecenia ping do sprawdzenia, czy host sieciowy jest osiągalny:

#!/bin/bash
gospodarz = 1 $ ″
jeśli [ -z $host ]; Następnie
echo Użycie: $0
wyjście 1
Być
ping -c 4 $host

jeśli [$? -równ. 0]; Następnie
echo $host jest osiągalny.
w przeciwnym razie
echo $host jest nieosiągalny.
Być

Wyjaśnienie:

  1. Jako argument przyjmuje nazwę hosta lub adres IP i sprawdza, czy argument został podany.
  2. Jeśli nie podano żadnego argumentu, wyświetla komunikat o użyciu i kończy działanie.
  3. Używa polecenia ping z opcją -c 4 do wysyłania czterech żądań echa ICMP do określonego hosta.
  4. Po uruchomieniu polecenia ping sprawdza status wyjścia ($?). Jeśli status wyjścia wynosi 0, oznacza to, że host jest osiągalny i skrypt wyświetla komunikat o powodzeniu. W przeciwnym razie drukuje komunikat o błędzie.

456

Notatka : Musimy podać nazwę hosta jako argument podczas uruchamiania skryptu. Tutaj użyliśmy google.com

29) Napisz skrypt powłoki, aby znaleźć największy element w tablicy:

Oto skrypt powłoki umożliwiający znalezienie największego elementu w tablicy.

#!/bin/bash
# Zadeklaruj tablicę
tablica=(3 56 24 89 67)

# Zainicjuj zmienną, aby przechowywać maksymalną wartość, zaczynając od pierwszego elementu

max=${tablica[0]}

# Iteruj po tablicy

dla liczby w ${tablica[@]}; Do

# Porównaj każdy element z bieżącym maksimum

jeśli ((liczba> maks.)); Następnie
maks.=$liczba
Być
zrobione

# Wydrukuj wartość maksymalną

echo Maksymalny element tablicy to: $max

Wyjaśnienie:

  1. ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. ` tablica=(3 56 24 89 67) `: Tablica jest zadeklarowana i zainicjowana wartościami.
  3. ` max=${tablica[0]} `: `max` jest inicjalizowane pierwszym elementem tablicy.
  4. ` dla liczby w ${tablica[@]}; Do `: Pętla „for” służy do iteracji po elementach tablicy.
  5. ` jeśli ((liczba> maks.)); Następnie `: Instrukcja `if` sprawdza, czy bieżący element `num` jest większy od bieżącego maksimum `max`.
  6. ` max=$num`: Jeśli`num ` jest większe niż `max`, `max` jest aktualizowane o wartość num.
  7. ` zrobione `: Pętla „for” jest zamknięta.
  8. ` echo Maksymalny element tablicy to: $max `: Na koniec skrypt wypisuje maksymalną wartość znalezioną w tablicy.
461

największa liczba

30) Napisz skrypt obliczający sumę elementów w tablicy.

#!/bin/bash

# Zadeklaruj tablicę

tablica=(1 65 22 19 94)

# Zainicjuj zmienną, aby zapisać sumę

suma=0

# Iteruj po tablicy i dodaj każdy element do sumy

dla liczby w ${tablica[@]}; Do
rano=$((rano + rano))
zrobione

# Wydrukuj sumę

echo Suma elementów tablicy wynosi: $sum

Wyjaśnienie:

` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.

` tablica=(1 65 22 19 94) `: Tablica jest zadeklarowana i zainicjowana wartościami.

` suma=0 `:` suma ` jest inicjalizowane na zero, aby przechowywać sumę elementów.

` dla liczby w ${tablica[@]}; Do `: A` Do Pętla ` służy do iteracji po elementach tablicy.

` rano=$((rano + rano)) `: Wewnątrz pętli każdy element ` na jednego ` dodaje się do ` suma ` zmienna.

` zrobione `: ` Do ` pętla jest zamknięta.

`echo Suma elementów tablicy wynosi: $sum`: Na koniec skrypt wypisuje sumę wszystkich elementów tablicy.

462

Suma elementów

Dowiedz się więcej o skryptach powłoki

Wniosek

Wszyscy maniacy wiemy, że skrypt powłoki jest bardzo przydatny w zwiększaniu produktywności pracy, a także oszczędzaniu czasu. Tak więc w tym artykule omówiliśmy 30 bardzo przydatnych i najbardziej oszukańczych przykładów skryptów powłoki . Mamy nadzieję, że ten kompletny przewodnik na temat przykładowych skryptów powłoki pomoże Ci zrozumieć wszystko na temat skryptów powłoki.




wyjście 1
Być
ping -c 4 $host

jeśli [$? -równ. 0]; Następnie
echo $host jest osiągalny.
w przeciwnym razie
echo $host jest nieosiągalny.
Być

Wyjaśnienie:

  1. Jako argument przyjmuje nazwę hosta lub adres IP i sprawdza, czy argument został podany.
  2. Jeśli nie podano żadnego argumentu, wyświetla komunikat o użyciu i kończy działanie.
  3. Używa polecenia ping z opcją -c 4 do wysyłania czterech żądań echa ICMP do określonego hosta.
  4. Po uruchomieniu polecenia ping sprawdza status wyjścia ($?). Jeśli status wyjścia wynosi 0, oznacza to, że host jest osiągalny i skrypt wyświetla komunikat o powodzeniu. W przeciwnym razie drukuje komunikat o błędzie.

456

Notatka : Musimy podać nazwę hosta jako argument podczas uruchamiania skryptu. Tutaj użyliśmy google.com

29) Napisz skrypt powłoki, aby znaleźć największy element w tablicy:

Oto skrypt powłoki umożliwiający znalezienie największego elementu w tablicy.

#!/bin/bash
# Zadeklaruj tablicę
tablica=(3 56 24 89 67)

# Zainicjuj zmienną, aby przechowywać maksymalną wartość, zaczynając od pierwszego elementu

częściowo pochodny lateks

max=${tablica[0]}

# Iteruj po tablicy

dla liczby w ${tablica[@]}; Do

# Porównaj każdy element z bieżącym maksimum

jeśli ((liczba> maks.)); Następnie
maks.=$liczba
Być
zrobione

# Wydrukuj wartość maksymalną

echo Maksymalny element tablicy to: $max

Wyjaśnienie:

  1. ` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.
  2. ` tablica=(3 56 24 89 67) `: Tablica jest zadeklarowana i zainicjowana wartościami.
  3. ` max=${tablica[0]} `: `max` jest inicjalizowane pierwszym elementem tablicy.
  4. ` dla liczby w ${tablica[@]}; Do `: Pętla „for” służy do iteracji po elementach tablicy.
  5. ` jeśli ((liczba> maks.)); Następnie `: Instrukcja `if` sprawdza, czy bieżący element `num` jest większy od bieżącego maksimum `max`.
  6. ` max=$num`: Jeśli`num ` jest większe niż `max`, `max` jest aktualizowane o wartość num.
  7. ` zrobione `: Pętla „for” jest zamknięta.
  8. ` echo Maksymalny element tablicy to: $max `: Na koniec skrypt wypisuje maksymalną wartość znalezioną w tablicy.
461

największa liczba

30) Napisz skrypt obliczający sumę elementów w tablicy.

#!/bin/bash

# Zadeklaruj tablicę

tablica=(1 65 22 19 94)

# Zainicjuj zmienną, aby zapisać sumę

suma=0

# Iteruj po tablicy i dodaj każdy element do sumy

dla liczby w ${tablica[@]}; Do
rano=$((rano + rano))
zrobione

# Wydrukuj sumę

echo Suma elementów tablicy wynosi: $sum

Wyjaśnienie:

` #!/bin/bash `: Linia shebang określa, że ​​skrypt powinien być interpretowany przy użyciu powłoki Bash.

` tablica=(1 65 22 19 94) `: Tablica jest zadeklarowana i zainicjowana wartościami.

` suma=0 `:` suma ` jest inicjalizowane na zero, aby przechowywać sumę elementów.

` dla liczby w ${tablica[@]}; Do `: A` Do Pętla ` służy do iteracji po elementach tablicy.

` rano=$((rano + rano)) `: Wewnątrz pętli każdy element ` na jednego ` dodaje się do ` suma ` zmienna.

` zrobione `: ` Do ` pętla jest zamknięta.

`echo Suma elementów tablicy wynosi: $sum`: Na koniec skrypt wypisuje sumę wszystkich elementów tablicy.

462

Suma elementów

Dowiedz się więcej o skryptach powłoki

Wniosek

Wszyscy maniacy wiemy, że skrypt powłoki jest bardzo przydatny w zwiększaniu produktywności pracy, a także oszczędzaniu czasu. Tak więc w tym artykule omówiliśmy 30 bardzo przydatnych i najbardziej oszukańczych przykładów skryptów powłoki . Mamy nadzieję, że ten kompletny przewodnik na temat przykładowych skryptów powłoki pomoże Ci zrozumieć wszystko na temat skryptów powłoki.