Bash:
טיפול בשגיאות

איך לבצע:

#!/bin/bash

# הפניית stderr לקובץ
grep "something" file.txt 2> errors.log

# ניהול שגיאות עם סטטוסים של יציאה
if ! grep "something" file.txt; then
    echo "אופס, משהו השתבש בחיפוש אחר 'משהו'."
    exit 1
fi

# שימוש ב-trap כדי לנקות לפני יציאה עקב שגיאה
cleanup() {
  echo "מנקה קבצים זמניים..."
  rm temp_*
}

trap cleanup ERR

# שגיאה מכוונת: אין הקובץ קיים
cat temp_file.txt

פלט לדוגמה כאשר מתרחשת שגיאה:

מנקה קבצים זמניים...
cat: temp_file.txt: קובץ או ספרייה לא קיים

בהרחבה

ניהול שגיאות בכתיבת סקריפטים ב-Bash משתייך לתחילת עידן של מעטפת Unix, שם סקריפטים עמידים ואמינים היו (ועדיין הם) חיוניים לניהול מערכת ואוטומציה. באופן מסורתי, שגיאות ב-Bash מנוהלות על ידי בדיקת סטטוס היציאה של פקודה, שמחזירה לפי המוסכמה 0 עבור הצלחה וערך שאינו אפס עבור כשלון.

Bash הציגה את הפקודה trap בתור built-in, אשר מאפשרת למשתמשים לציין פקודות שיופעלו על סימנים שונים או יציאה מהסקריפט. זה שימושי עבור משימות ניקוי או מנגנון ניהול שגיאות בכל זאת.

ישנה גם את פקודת ה-set, שיכולה לשנות את התנהגות Bash במקרה של שגיאות. לדוגמה, set -e תגרום לסקריפט לצאת מיד אם פקודה כלשהי יוצאת עם סטטוס שאינו אפס, מה שיוצר דרך להיכשל מהר ולמנוע שגיאות המשך.

אלטרנטיבות לניהול שגיאות built-in של Bash כוללות בדיקה מפורשת לקיום הקבצים, שימוש בהכלה של פקודות, או אפילו כתיבת פונקציות משלך לניהול שגיאות בצורה יותר דקדקנית.

למרות שניהול שגיאות מרובה לעיתים נתפס כמיותר לסקריפטים קטנים, זוהי פרקטיקה שיכולה לחסוך הרבה זמן בניפוי תקלות ולמנוע התנהגות בלתי צפויה גם לך וגם למשתמשים.

ראה גם

זכרו, כתיבת סקריפט היא צורת אומנות, ואופן ניהול ההחלקות והנפילות שלכם יכול לעשות את היצירה שלכם יותר עמידה. סקריפטינג שמח!