Funcții în Bash în Linux / Bash

Scripting Bash POSIX / Bash built-in

Gruparea instrucțiunilor în blocuri reutilizabile de cod, cu variabile locale și parametri.

Sintaxă comandă
nume_functie() {
  local param1="$1"
  ...
  return 0
}

Ce face Funcții în Bash

Funcțiile în Bash permit modularizarea codului și evitarea repetițiilor. O funcție se comportă ca o mică comandă internă: primește argumente prin variabilele poziționale $1, $2, numărul de argumente prin $# și toate argumentele prin $@.

Variabilele declarate în interiorul unei funcții sunt globale în mod implicit! Pentru a nu suprascrie accidental variabile din restul scriptului, este esențial să folosești cuvântul cheie local.

Opțiuni și argumente

Opțiune / Parametru Descriere
$1, $2, ... Argumentele pasate funcției la apelare.
$# Numărul total de parametri primiți de funcție.
$@ Toate argumentele primite, fiecare ca șir separat protejat prin ghilimele.
local VAR=val Limitează vizibilitatea variabilei exclusiv la corpul funcției curente.
return N Încheie funcția și returnează un cod numeric de ieșire (0 pentru succes, 1-255 pentru eroare).

Exemple

Exemplul 1: Funcție de jurnalizare cu dată și oră

Creăm o funcție reutilizabilă de logare a mesajelor.

log_mesaj() {
  local nivel="$1"
  local text="$2"
  echo "[$nivel] $text"
}

log_mesaj "INFO" "Aplicatia s-a conectat la baza de date"
log_mesaj "WARN" "Spatiul pe disc depaseste 80%"

Rezultat

[INFO] Aplicatia s-a conectat la baza de date
[WARN] Spatiul pe disc depaseste 80%

Greșeli frecvente

  • Încercarea de a returna un text folosind return "rezultat": comanda return poate returna DOAR coduri numerice de la 0 la 255. Pentru a returna text, funcția trebuie să folosească echo "text", iar apelantul capturează rezultatul cu REZ=$(functie).
  • Omiterea cuvântului local, ceea ce duce la suprascrierea variabilelor globale din greșeală.

Comenzi înrudite

  • Variabile în Bash: Declararea, atribuirea, valorile implicite și expandarea corectă a variabilelor în Bash.
  • exit: Încheie execuția shell-ului sau a scriptului curent și transmite un cod numeric de stare sistemului.