Middle
Bash-da istifadəçi səhvlərini necə idarə edirsiniz?
sobes.tech Süni İntellekt
AI-dan cavab
Bash-da istifadəçi səhvləri əsasən aşağıdakı üsullarla idarə olunur:
- Əmrlərin çıxış kodları: Hər bir əmrin tamamlanma kodu (çıxış statusu) qaytarılır.
0adətən uğuru göstərir, digər bütün dəyərlər isə səhvi. - Şərti quruluşlar:
if,elif,elseçıxış kodlarını yoxlamaq üçün istifadə olunur. - Məntiqi operatorlar:
&&(və),||(və ya) əvvəlki əmrlərin uğuruna və ya uğursuzluğuna görə əmrləri icra etməyə imkan verir. - Çıxışların yönləndirilməsi:
>(stdout),2>(stderr),&>(stdout və stderr). - Təhlükə (traps): Siqnalları qəbul etdikdə və ya skript bitdikdə əmri yerinə yetirməyə imkan verir.
Nümunələr:
#!/bin/bash
# Çıxış kodunun yoxlanması
if ! command_that_might_fail; then
echo "Əmrin icrasında xeta!" >&2 # stderr-ə yönləndirmə
exit 1 # Skripti xətalı kod ilə bitirmək
fi
# Məntiqi operator &&
command_successful && echo "Əməliyyat uğurla yerinə yetirildi" || echo "Əməliyyat səhvlə tamamlandı"
# SIGINT üçün trap
trap 'echo "Interaktiv siqnal alındı. Çıxış..."; exit 1' SIGINT
# Xətaların yönləndirilməsi və mesaj
if command_with_errors 2> error.log; then
echo "Əməliyyat xətasız yerinə yetirildi"
else
echo "Xətalar aşkar edildi. Ətraflı error.log-da"
fi
Skriptlərin etibarlılığını artırmaq üçün həmçinin istifadə olunur:
set -e: Hər hansı bir əmrin uğursuz olması skripti dayandırır (ifvəwhilebundan istisna).set -u: Dəyişənlər istifadə edilmədən əvvəl təyin olunmalıdır.set -o pipefail: Pipeline-in çıxış kodu ən son uğursuz olan əmrin kodu olur.
#!/bin/bash
set -euo pipefail
# Bu skript "undefined_var" təyin olunmayıbsa, dayandırılır
echo "$undefined_var"
# Bu skript "failing_command" sıfır olmayan kod ilə bitərsə, dayandırılır
failing_command
Funktsiyaların və arqumentlərin istifadəsi:
#!/bin/bash
# Argument yoxlaması ilə funksiya
validate_args() {
if [ $# -ne 2 ]; then
echo "İstifadə: $0 <argument1> <argument2>" >&2
exit 1
fi
}
validate_args "$@"