5 przykładów skryptów Bash, które pomogą Ci nauczyć się programowania w systemie Linux

Skrypty Bash to jeden z najpopularniejszych i dostępnych sposobów programowania komputera z systemem Linux. Te proste przykłady skryptów pomogą Ci zrozumieć proces i wprowadzą Cię w podstawy programowania w języku Bash.

1. Jak wydrukować Hello World w Bash

Przykład Hello World to świetny sposób na naukę dowolnego języka programowania, a Bash nie jest wyjątkiem.

Oto jak wydrukować „Hello World” przy użyciu Bash:

  • Otwórz edytor tekstu i rozpocznij edycję nowego pliku zawierającego następujące linie kodu.
  • Pierwsza linia skryptów Bash powinna zawsze wyglądać tak:
     #!/bin/bash 

    Polecenie Shebang (#!/bin/bash) jest niezbędne, ponieważ powłoka używa go do decydowania o sposobie uruchomienia skryptu. W tym przypadku używa interpretera Bash.

  • Dowolna linia rozpoczynająca się od symbolu # jest komentarzem. Linia shebang to przypadek szczególny, ale możesz użyć własnych komentarzy, aby wyjaśnić swój kod. Dodaj komentarz w linii 2, np.:
      
  • 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" 
  • Zapisz skrypt, najlepiej z rozszerzeniem .sh, np. hello_world.sh. Rozszerzenie nie jest wymogiem, ale jest to konwencja, której warto się trzymać.
  • Aby uruchomić skrypt, uczyń plik wykonywalnym. Użyj polecenia chmod („change mode”) wraz z argumentem +x („wykonywalny”) 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 na terminalu tekst „Hello World”:
  • 2. Utwórz katalog poprzez odczytanie danych wejściowych

    Ze swoich skryptów możesz uruchomić dowolny program, który normalnie można uruchomić z wiersza poleceń. Na przykład możesz utworzyć nowy katalog ze swojego skryptu za pomocą polecenia mkdir.

  • Zacznij 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 wprowadzone przez użytkownika. Pojedynczy argument nazywa zmienną, w której powłoka będzie przechowywać dane wejściowe:
     read newdir 
  • Jeśli chcesz użyć wartości przechowywanej w zmiennej, poprzedź 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 zostanie wyświetlony monit o wprowadzenie danych. Wpisz poprawną nazwę katalogu, a zobaczysz, że skrypt utworzy ją w twoim bieżącym katalogu:
  • 3. Utwórz katalog za pomocą argumentów wiersza poleceń

    Jako alternatywę dla interaktywnego odczytywania danych wejściowych, większość poleceń Linuksa obsługuje argumenty. Możesz podać argument podczas uruchamiania programu, aby kontrolować jego zachowanie.

    W skrypcie możesz użyć $1, aby odwołać się do specjalnej zmiennej zawierającej wartość pierwszego argumentu. $2 będzie odnosić się do drugiego argumentu i tak dalej.

  • 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 podając jako argument wybraną nazwę nowego katalogu:
     ./arg_dir.sh Test 
  • Być może zastanawiasz się, co się stanie, jeśli uruchomisz skrypt bez podania argumentu. Wypróbuj i zobacz; powinieneś otrzymać komunikat o błędzie rozpoczynający się od „usage: mkdir”:

    Bez żadnych argumentów wiersza poleceń wartość 1 $ będzie pusta. Kiedy skrypt wywoła mkdir, nie przekaże mu argumentu, a polecenie mkdir zwróci ten błąd. Aby tego uniknąć, możesz samodzielnie sprawdzić warunek i przedstawić bardziej przyjazny błąd:

  • Jak zawsze zacznij od linii shebang:
     #!/bin/bash 
  • Zanim wywołasz mkdir, sprawdź, czy pierwszy argument jest pusty (tzn. nie ma argumentów). Możesz 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 języku Bash:
     fi 
  • Twój skrypt może teraz kontynuować pracę jak poprzednio, aby obsłużyć przypadek, gdy obecny jest argument:
     mkdir $1 
  • Po uruchomieniu nowej wersji skryptu otrzymasz komunikat, jeśli zapomnisz podać argument:

    4. Usuń plik za pomocą funkcji Bash

    Jeśli powtarzasz ten sam kod, rozważ zawinięcie go w funkcję. Następnie możesz wywołać tę funkcję, kiedy tylko zajdzie taka potrzeba.

    Oto przykład funkcji usuwającej dany 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żesz wywołać funkcję i przekazać jej nazwę pliku do usunięcia:

     del_file test.txt 

  • Kiedy wywołasz funkcję, ustawi ona specjalny znak $? wartość ze statusem wyjścia ostatniego uruchomionego polecenia. Status wyjścia jest przydatny do sprawdzania błędów; w tym przykładzie możesz sprawdzić, czy polecenie rm powiodło się:

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

    5. Utwórz podstawowy kalkulator do obliczeń arytmetycznych

    Ostatni przykład demonstruje bardzo prosty kalkulator. Po uruchomieniu wpiszesz dwie wartości, a następnie wybierzesz operację arytmetyczną, którą chcesz na nich przeprowadzić.

    Oto kod calc.sh:

     #!/bin/bash


    echo "Enter first number: "
    read a

    echo "Enter second number: "
    read b


    echo "Enter Arithmetic Operation Choice :"
    echo "1. Addition"
    echo "2. Subtraction"
    echo "3. Multiplication"
    echo "4. Division"
    read choice


    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"

    Zwróć uwagę na użycie case… esac, które jest odpowiednikiem instrukcji switch w Bashu w innych językach. Umożliwia przetestowanie wartości — w tym przypadku zmiennej wyboru — względem kilku ustalonych wartości i uruchomienie powiązanego kodu.

    Skrypt ten używa polecenia bc do wykonania każdego obliczenia.