5 exemple de script Bash pentru a vă ajuta să învățați programarea Linux

Scripturile Bash sunt o modalitate populară și accesibilă de a programa computerele Linux. Aceste exemple simple de scripturi te vor ajuta să înțelegi procesul și să te familiarizezi cu elementele de bază ale programării Bash.

1. Afișarea „Salut Lume” în Bash

Exemplul „Salut Lume” este un punct de plecare excelent pentru a învăța orice limbaj de programare, iar Bash nu face excepție.

Iată cum poți afișa „Salut Lume” folosind Bash:

  • Deschide un editor de text și creează un fișier nou, unde vei introduce următoarele linii de cod.
  • Prima linie din scripturile tale Bash ar trebui să fie întotdeauna:
     #!/bin/bash 

    Comanda Shebang (#!/bin/bash) este crucială, deoarece aceasta instruiește shell-ul cum să execute scriptul. În acest caz, se utilizează interpretorul Bash.

  • Orice linie care începe cu simbolul # este considerată un comentariu. Linia shebang este un caz special, dar poți folosi propriile comentarii pentru a explica codul. Adaugă un comentariu pe linia 2, de exemplu:
      # Acest script afișează "Salut Lume" 
  • Poți afișa text în ieșirea standard utilizând comanda `echo`, urmată de șirul pe care dorești să-l afișezi. Adaugă următoarea linie pe linia 3:
     echo "Salut Lume" 
  • Salvează scriptul, de preferință cu extensia .sh, de exemplu, salut_lume.sh. Extensia nu este obligatorie, dar este o convenție bună.
  • Pentru a rula scriptul, trebuie să-l faci executabil. Utilizează comanda `chmod` („schimbă modul”) împreună cu argumentul +x („executabil”) și numele scriptului:
     chmod +x salut_lume.sh 
  • Folosește această comandă pentru a rula scriptul din directorul unde se află:
     ./salut_lume.sh 
  • La rulare, scriptul va afișa textul „Salut Lume” în terminalul tău:

2. Crearea unui director prin citirea intrării

Din scripturile tale, poți executa orice program pe care l-ai putea executa în mod normal din linia de comandă. De exemplu, poți crea un director nou din scriptul tău folosind comanda `mkdir`.

  • Începe cu aceeași linie shebang ca înainte:
     #!/bin/bash 
  • Cere utilizatorului un nume pentru director, folosind comanda `echo`:
     echo "Introduceți numele noului director:" 
  • Folosește comanda încorporată `read` pentru a prelua intrarea utilizatorului. Singurul argument specifică variabila unde shell-ul va stoca intrarea:
     read director_nou 
  • Când vrei să utilizezi valoarea stocată într-o variabilă, adaugă simbolul dolar ($) în fața numelui său. Poți transmite conținutul variabilei de intrare ca argument la comanda `mkdir`, pentru a crea un director nou:
     mkdir $director_nou 
  • Când rulezi acest script, ți se va solicita să introduci un nume. Introdu un nume valid pentru director și vei vedea că scriptul îl va crea în directorul tău curent:

3. Crearea unui director folosind argumente din linia de comandă

Ca alternativă la citirea interactivă a intrărilor, majoritatea comenzilor Linux acceptă argumente. Poți oferi un argument când rulezi un program, pentru a-i controla comportamentul.

În scriptul tău, poți utiliza `$1` pentru a te referi la o variabilă specială care conține valoarea primului argument. `$2` se va referi la al doilea argument și așa mai departe.

  • Creează un director folosind comanda `mkdir` din exemplul anterior. De data aceasta, utilizează variabila încorporată `$1`:
     #!/bin/bash
    mkdir $1
  • Rulează scriptul, de data aceasta specificând numele dorit pentru un director nou ca argument:
     ./arg_dir.sh Test 

Te-ai putea întreba ce se întâmplă dacă rulezi scriptul fără a specifica niciun argument. Încearcă și vei vedea; ar trebui să primești un mesaj de eroare care începe cu „usage: mkdir”:

Fără niciun argument în linia de comandă, valoarea lui `$1` va fi goală. Când scriptul tău apelează `mkdir`, nu îi va transmite niciun argument, iar comanda `mkdir` va returna acea eroare. Pentru a evita acest lucru, poți verifica singur starea și poți afișa un mesaj de eroare mai prietenos:

  • Ca întotdeauna, începe cu linia shebang:
     #!/bin/bash 
  • Înainte de a apela `mkdir`, verifică dacă primul argument este gol (adică, nu a fost specificat niciun argument). Poți face acest lucru folosind instrucțiunea `if` din Bash, care execută cod în funcție de o condiție:
     if [ -z "$1" ]; then 
  • Dacă primul argument este gol, afișează o eroare și încheie scriptul:
          echo "Te rugăm să oferi un nume pentru director ca prim argument"
        exit
  • Cuvântul cheie „fi” (inversul lui „if”) marchează sfârșitul unei declarații `if` în Bash:
     fi 
  • Scriptul tău poate continua acum ca înainte, pentru a gestiona cazul în care este prezent un argument:
     mkdir $1 

Când rulezi această nouă versiune a scriptului, vei primi un mesaj dacă uiți să incluzi un argument:

4. Ștergerea unui fișier utilizând o funcție Bash

Dacă repeti același cod, ia în considerare includerea lui într-o funcție. Poți apoi apela acea funcție ori de câte ori ai nevoie.

Iată un exemplu de funcție care șterge un anumit fișier.

  • Începe cu linia shebang:
     #!/bin/bash 
  • Definește o funcție scriind numele ei, urmat de paranteze și comenzi între acolade:
     sterge_fisier() {
        echo "Ștergem $1"
        rm $1
    }

    Apoi, poți apela funcția și îi poți specifica numele fișierului de șters:

     sterge_fisier test.txt 

Când apelezi o funcție, aceasta va seta valoarea specială `$?` cu starea de ieșire a ultimei comenzi executate. Starea de ieșire este utilă pentru verificarea erorilor; în acest exemplu, poți testa dacă comanda `rm` a avut succes:

 if [ $? -ne 0 ]; then
    echo "Ne pare rău, nu am putut șterge fișierul"
fi

5. Crearea unui calculator de bază pentru calcule aritmetice

Acest ultim exemplu demonstrează un calculator foarte simplu. Când îl rulezi, vei introduce două valori, apoi vei alege o operație aritmetică pe care să o efectuezi asupra lor.

Iată codul pentru calc.sh:

 #!/bin/bash


echo "Introdu primul număr: "
read a

echo "Introdu al doilea număr: "
read b


echo "Alege operația aritmetică:"
echo "1. Adunare"
echo "2. Scădere"
echo "3. Înmulțire"
echo "4. Împărțire"
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 "Rezultat: $result"

Observă utilizarea `case…esac`, care este echivalentul din Bash al instrucțiunii `switch` din alte limbaje. Aceasta îți permite să verifici o valoare – în acest caz, variabila `choice` – în raport cu mai multe valori fixe și să rulezi codul corespunzător.

Acest script folosește comanda `bc` pentru a efectua fiecare calcul.