Middle
Bash'ta kullanıcı hatalarını nasıl işliyorsun?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bashda, istifadəçi səhvləri əsasən aşağıdakı üsullarla idarə olunur:
- Əmrlərin çıxış kodları: Hər bir əmr tamamlanma kodu (çıxış statusu) qaytarı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ış yönləndirmələri:
>(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 xəta!" >&2 # stderr-ə yönləndirmə
exit 1 # Skripti səhv kodu 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 "İnterrupt 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-də"
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əwhileistisna olmaqla).set -u: Dəyişənlər istifadə edilmədən əvvəl təyin olunmalıdır.set -o pipefail: Boru xəttinin çıxış kodu ən son uğursuz ə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 çıxış kodu verərsə, dayandırılır
failing_command
Funksiyaların və arqumentlərin istifadəsi:
#!/bin/bash
# Arqument yoxlaması ilə funksiya
validate_args() {
if [ $# -ne 2 ]; then
echo "İstifadə: $0 <argument1> <argument2>" >&2
exit 1
fi
}
validate_args "$@"