Middle
Kā jūs apstrādājat lietotāja kļūdas bash?
sobes.tech AI
Atbilde no AI
bash lietošanas kļūdu apstrāde galvenokārt tiek veikta, izmantojot:
- Iziešanas kodus: Katra komanda atgriež pabeigšanas kodu (exit status).
0parasti nozīmē panākumus, bet citi — kļūdu: - Nosacījumu konstrukcijas:
if,elif,elsetiek izmantotas iziešanas kodu pārbaudei: - Loģiskie operatori:
&&(un),||(vai) ļauj izpildīt komandas atkarībā no iepriekšējās sekmes vai neveiksmes: - Iziešanas novirzes:
>(stdout),2>(stderr),&>(stdout un stderr): - Lūkas (traps): ļauj izpildīt komandu, saņemot signālu vai pabeidzot skriptu:
Piemēri:
#!/bin/bash
# Iziešanas koda pārbaude
if ! command_that_might_fail; then
echo "Kļūda komandas izpildē!" >&2 # novirze uz stderr
exit 1 # skripta pabeigšana ar kļūdas kodu
fi
# Loģiskais operators &&
command_successful && echo "Komanda veiksmīgi izpildīta" || echo "Komanda beidzās ar kļūdu"
# SIGINT (Ctrl+C) lūka
trap 'echo "Signāls saņemts. Iziet..."; exit 1' SIGINT
# Kļūdu novirzes un ziņojuma izvadīšana
if command_with_errors 2> error.log; then
echo "Komanda izpildīta bez kļūdām"
else
echo "Atklātas kļūdas. Detalizācija error.log"
fi
Lai palielinātu skriptu uzticamību, tiek izmantoti arī:
set -e: Skripts pārtrauks pēc jebkuras neveiksmīgas komandas (izņemotifunwhilepārbaudes).set -u: Mainīgie ir jādefinē iepriekš.set -o pipefail: Vada iziešanas kods kļūdas gadījumā ir pēdējās komandas kods, kas beidzās ar kļūdu:
#!/bin/bash
set -euo pipefail
# Šis skripts pārtrauks, ja "undefined_var" nav definēts
echo "$undefined_var"
# Šis skripts pārtrauks, ja "failing_command" atgriezīs nullekoda
failing_command
Funkciju un argumentu izmantošana:
#!/bin/bash
# Funkcija ar argumentu pārbaudi
validate_args() {
if [ $# -ne 2 ]; then
echo "Lietošanas veids: $0 <arguments1> <arguments2>" >&2
exit 1
fi
}
validate_args "$@"