Contents

5 przykładów skryptów Bash pomocnych w nauce programowania w systemie Linux

Szybkie linki

⭐ Jak wydrukować Hello World w Bash

⭐ Tworzenie katalogu przez odczyt danych wejściowych

⭐ Tworzenie katalogu przy użyciu argumentów wiersza poleceń

Usuwanie pliku za pomocą funkcji Bash

⭐ Tworzenie podstawowego kalkulatora do obliczeń arytmetycznych

Skrypty Bash stanowią bardzo rozpowszechniony i łatwo dostępny sposób, za pomocą którego użytkownicy mogą programować swoje urządzenia komputerowe oparte na systemie Linux.oparte na systemie Linux. Dostarczenie podstawowych próbek skryptów ułatwi zrozumienie podstawowych procesów i zapewni wprowadzenie do podstawowych zasad programowania Bash.

Jak wydrukować Hello World w Bash

Rzeczywiście, szanowana demonstracja “Hello World” służy jako doskonałe wprowadzenie do zawiłości każdego języka kodowania, w tym szanowanego języka skryptowego Bash.

Aby wygenerować dopracowany wynik w języku Bash, można zastosować zwięzłą i ekspresyjną składnię wiersza poleceń, która wykorzystuje wbudowane polecenia i parametry. Proces drukowania “Hello World” polega na wywołaniu narzędzia echo z odpowiednimi argumentami w celu renderowania tekstu na ekranie terminala.

Otwórz odpowiedni edytor tekstu, taki jak Microsoft Word lub Google Docs, i rozpocznij pracę nad nowym dokumentem, który zawiera poniższe linie kodu źródłowego:

⭐ Pierwsza linia skryptów Bash powinna zawsze wyglądać następująco:

 #!/bin/bash 

Dyrektywa shebang, oznaczana symbolem “#!”, po którym następuje ścieżka do wykonywalnego pliku binarnego i interpretowana przez program ładujący systemu operacyjnego, służy jako krytyczny element w określaniu odpowiedniego interpretera do wykonania danego skryptu. W szczególności, napotykając polecenie shebang “#!/bin/bash” w pliku skryptu, system operacyjny wywołuje interpreter Bash, aby odpowiednio wykonać skrypt.

⭐ Każda linia zaczynająca się od symbolu # jest komentarzem. Linia shebang jest szczególnym przypadkiem, ale możesz użyć własnych komentarzy, aby wyjaśnić swój kod. Dodaj komentarz w linii 2, np.:

 # Print some text from a bash script 

⭐ Możesz wydrukować na standardowe wyjście za pomocą polecenia echo, po którym następuje wartość, którą chcesz wydrukować. Dodaj następujące polecenie w linii 3:

 echo "Hello World" 

Podczas tworzenia skryptu w języku Bash zaleca się przestrzeganie konwencji nazewnictwa poprzez dołączenie rozszerzenia “.sh” do nazwy pliku skryptu. Chociaż nie jest to ściśle wymagane, stosowanie takiej konwencji może pomóc w łatwiejszej identyfikacji i organizacji skryptów.

⭐ Aby uruchomić skrypt, należy uczynić plik wykonywalnym.Użyj polecenia chmod (“change mode”) wraz z argumentem \\+x (“executable”) i nazwą skryptu powłoki:

 chmod \\+x hello_world.sh 

⭐ Użyj tego polecenia, aby uruchomić skrypt z jego katalogu:

 ./hello_world.sh 

⭐ Po uruchomieniu skrypt wyświetli w terminalu tekst “Hello World”: /pl/images/screenshot-2024-01-09-at-13-31-56.png

Tworzenie katalogu poprzez odczyt danych wejściowych

Włączenie funkcji wykonywania poleceń zwykle wprowadzanych w terminalu, takich jak tworzenie nowego katalogu za pomocą polecenia mkdir w skrypcie, jest możliwe dzięki implementacji niestandardowych skryptów.

⭐ Rozpocznij od tej samej linii shebang, co poprzednio:

 #!/bin/bash 

⭐ Zapytaj użytkownika o nazwę katalogu, używając polecenia echo, jak poprzednio:

 echo "Enter new directory name:" 

⭐ Użyj wbudowanego polecenia read, aby pobrać dane wejściowe użytkownika. Pojedynczy argument określa zmienną, w której powłoka będzie przechowywać dane wejściowe:

 read newdir 

⭐ Gdy trzeba użyć wartości przechowywanej w zmiennej, należy poprzedzić jej nazwę symbolem dolara ( $ ). Możesz przekazać zawartość zmiennej wejściowej jako argument do polecenia mkdir, aby utworzyć nowy katalog:

 mkdir $newdir 

⭐ Po uruchomieniu tego skryptu pojawi się monit o wprowadzenie danych. Wprowadź poprawną nazwę katalogu, a zobaczysz, że skrypt utworzy go w bieżącym katalogu: /pl/images/screenshot-2024-01-09-at-13-39-11.png

Utwórz katalog za pomocą argumentów wiersza poleceń

Zamiast ręcznego wprowadzania danych wejściowych, wiele programów wiersza poleceń systemu Linux umożliwia podawanie argumentów podczas wykonywania w celu wpłynięcia na ich działanie.

W ramach skryptu możliwe jest wykorzystanie zmiennych od $1 do $9 do reprezentowania wartości argumentów odpowiednio od pierwszego do dziewiątego. Konkretne zastosowanie lub cel, dla którego te zmienne są wykorzystywane, może się różnić w zależności od wymagań danego zadania.

⭐ Utwórz katalog za pomocą polecenia mkdir z poprzedniego przykładu. Jednak tym razem użyj wbudowanej zmiennej $1:

 #!/bin/bash
mkdir $1 

⭐ Uruchom skrypt, tym razem przekazując wybraną nazwę nowego katalogu jako argument:

 ./arg_dir.sh Test 

Podczas wykonywania skryptu bez podania jakichkolwiek danych wejściowych można napotkać błąd użycia rozpoczynający się od “mkdir”.

/pl/images/screenshot-2024-01-09-at-13-42-32.png

W przypadku braku argumentów wiersza poleceń, pierwszy parametr pozycyjny ($1) zwróci pustą wartość. Podczas wykonywania polecenia “mkdir” w skrypcie, nie jest do niego przekazywany żaden argument, co skutkuje błędem zwracanym przez polecenie “mkdir”.Aby obejść ten problem, można samodzielnie zweryfikować takie warunki i zamiast tego podać bardziej przyjazny dla użytkownika komunikat o błędzie.

⭐ Jak zawsze, zacznij od linii shebang:

 #!/bin/bash 

⭐ Przed wywołaniem mkdir sprawdź, czy pierwszy argument jest pusty (tj. bez argumentów). Można to zrobić za pomocą instrukcji if Basha, która uruchamia kod na podstawie warunku:

 if ["$1" = ""]; then 

⭐ Jeśli pierwszy argument jest pusty, wypisz błąd i zakończ skrypt:

     echo "Please provide a new directory name as the first argument"
    exit 

⭐ Nieco dziwne słowo kluczowe “fi” (“if” odwrócone) sygnalizuje koniec instrukcji if w Bash:

 fi 

⭐ Twój skrypt może teraz kontynuować jak poprzednio, aby obsłużyć przypadek, gdy argument jest obecny:

 mkdir $1 

Podczas wykonywania zaktualizowanej iteracji dzisiejszego programu konieczne jest podanie wszystkich wymaganych parametrów wejściowych; niezastosowanie się do tego spowoduje wygenerowanie powiadomienia alarmowego informującego użytkownika o takim niedopatrzeniu.

/pl/images/screenshot-2024-01-09-at-13-49-38.png

Usuwanie pliku za pomocą funkcji Bash

W przypadku napotkania powtarzającego się kodu, korzystne może być zawarcie go w funkcji. Pozwala to na implementację logiki funkcji w dowolnym miejscu, po prostu wywołując ją w razie potrzeby.

Oczywiście, oto ilustracja funkcji, która eliminuje określony plik.

⭐ Zacznij od linii shebang:

 #!/bin/bash 

⭐ Zdefiniuj funkcję, wpisując jej nazwę, a następnie puste nawiasy i polecenia w nawiasach klamrowych:

 del_file() {
    echo "deleting $1"
    rm $1
} 

Następnie można wywołać funkcję i przekazać jej nazwę pliku do usunięcia:

 del_file test.txt 

/pl/images/bash-del-file.png

Wywołanie funkcji powoduje przypisanie unikalnej zmiennej specjalnej “$?” z kodem wyjścia ostatniego uruchomionego polecenia. Ten kod wyjścia służy jako skuteczny środek do oceny błędów i może być wykorzystany do określenia, czy polecenie “rm” zostało wykonane pomyślnie, czy nie, jak pokazano w tym przykładzie.

 if [ $? -ne 0 ]; then
    echo "Sorry, could not delete the file"
fi 

/pl/images/bash-del-file-fail.png

Tworzenie podstawowego kalkulatora do obliczeń arytmetycznych

Poniższa instancja stanowi przykład podstawowego urządzenia obliczeniowego. Po uruchomieniu użytkownik wprowadzi dwie liczby i wybierze funkcję arytmetyczną do wykonania na nich.

Oto kod dla calc.sh:

 #!/bin/bash

# Take operands as input
echo "Enter first number: "
read a

echo "Enter second number: "
read b

 # Input type of operation
echo "Enter Arithmetic Operation Choice :"
echo "Addition"
echo "Subtraction"
echo "Multiplication"
echo "Division"
read choice

 # calculator operations
case $choice in
  1)
 result=`echo $a \\+ $b | bc`
  ;;

  2)
 result=`echo $a - $b | bc`
 ;;

  3)
 result=`echo $a \* $b | bc`
  ;;

  4)
 result=`echo "scale=2; $a / $b" | bc`
  ;;
esac

echo "Result: $result" 

Rozważmy wykorzystanie wyrażenia case w Bash, które służy jako analogiczna konstrukcja do instrukcji switch obecnej w różnych językach programowania.Umożliwia to ocenę wartości parametru względem wielu z góry określonych wartości, a następnie wykonanie odpowiedniej funkcji w oparciu o wynik takiej oceny.

Ten skrypt wykorzystuje poleceniebcc w celu wykonania każdej operacji arytmetycznej.

/pl/images/bash-calc.png