Ce face if / else
Instrucțiunea if verifică dacă o comandă sau un test returnează codul de ieșire 0 (ceea ce înseamnă succes/adevărat în UNIX).
Pentru comparații de numere, verificări de existență a fișierelor și potriviri de text se folosesc parantezele drepte duble [[ ... ]] (specifice Bash, mai sigure și mai puternice decât vechiul test [ ... ] POSIX).
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-f FISIER |
Adevărat dacă fișierul există și este un fișier obișnuit. |
-d DIRECTOR |
Adevărat dacă directorul există pe disc. |
-z SIR |
Adevărat dacă șirul este gol (lungime 0). |
-n SIR |
Adevărat dacă șirul NU este gol. |
==, != |
Comparație de egalitate sau inegalitate între texte (acceptă și măști/wildcards). |
-eq, -ne, -lt, -gt |
Comparații numerice: egal (-eq), diferit (-ne), mai mic (-lt), mai mare (-gt). |
Exemple
Exemplul 1: Verificarea existenței unui fișier
Testăm dacă un fișier important există înainte de a-l procesa.
touch date.csv
if [[ -f date.csv ]]; then
echo "Fisierul date.csv exista si este valid"
else
echo "Eroare: fisierul lipseste"
fi
Rezultat
Fisierul date.csv exista si este valid
Exemplul 2: Comparație numerică între două valori
Folosim operatorul -ge (greater than or equal).
NOTA=10
if [[ $NOTA -ge 5 ]]; then
echo "Examen promovat!"
else
echo "Examen picat."
fi
Rezultat
Examen promovat!
Greșeli frecvente
- Omiterea spațiilor din interiorul parantezelor:
[[conditie]]va returna eroare; este obligatoriu să lași spații:[[ conditie ]]. - Folosirea operatorilor
<sau>în[ ... ]clasic fără scăpare, ceea ce duce la redirecționarea nedorită a ieșirii către un fișier cu numele celeilalte valori.