Middle
Kako rukujete korisničkim greškama u bash-u?
sobes.tech АИ
Одговор од АИ
U bash-u, korisničke greške se uglavnom obrađuju pomoću:
- Kodova izlaza komandi: Svaka komanda vraća kod završetka (status izlaza).
0obično označava uspeh, bilo koja druga vrednost grešku. - Uslovnih konstrukcija:
if,elif,elsekoriste se za proveru kodova izlaza. - Logičkih operatora:
&&(i),||(ili) omogućavaju izvršavanje komandi u zavisnosti od uspeha/neuspeha prethodnih. - Preusmeravanja izlaza:
>(stdout),2>(stderr),&>(stdout i stderr). - Trapova: Omogućavaju izvršenje komande pri primanju signala ili završetku skripte.
Primeri:
#!/bin/bash
# Provera koda izlaza
if ! command_that_might_fail; then
echo "Greška pri izvršenju komande!" >&2 # Preusmeravanje u stderr
exit 1 # Završetak skripte sa greškom
fi
# Logički operator &&
command_successful && echo "Komanda uspešno izvršena" || echo "Komanda je završila greškom"
# Trap za SIGINT (Ctrl+C)
trap 'echo "Primljen signal prekida. Izlaz..."; exit 1' SIGINT
# Preusmeravanje grešaka i poruka
if command_with_errors 2> error.log; then
echo "Komanda je izvršena bez grešaka"
else
echo "Otkriveni su greške. Detalji u error.log"
fi
Za povećanje pouzdanosti skripti, takođe se koriste:
set -e: Skripta se zaustavlja ako bilo koja komanda ne uspe (osim uifiwhile).set -u: Promenljive moraju biti definisane pre upotrebe.set -o pipefail: Kod izlaza cejne ce biti kod poslednje komande koja je neuspešna.
#!/bin/bash
set -euo pipefail
# Ovaj skript će se završiti ako "undefined_var" nije definisana
echo "$undefined_var"
# Ovaj skript će se završiti ako "failing_command" vrati nenulni kod
failing_command
Korišćenje funkcija i argumenata:
#!/bin/bash
# Funkcija sa proverom argumenata
validate_args() {
if [ $# -ne 2 ]; then
echo "Upotreba: $0 <argument1> <argument2>" >&2
exit 1
fi
}
validate_args "$@"