Bash:
כתיבה לשגיאה התקנית
איך לעשות זאת:
ב-Bash, אתה משתמש ב->&2
כדי להפנות פלט ל-stderr. הנה דוגמה בסיסית:
echo "זו הודעה רגילה"
echo "זו הודעת שגיאה" >&2
הרצת סקריפט זה תציג את שתי ההודעות בקונסול, אך אם תפנה אותם, תוכל להפריד בין ה-stdout ל-stderr. לדוגמה:
bash script.sh > output.txt 2> error.txt
output.txt
יכיל את "זו הודעה רגילה"
, בעוד ש-error.txt
יתעד "זו הודעת שגיאה"
.
למקרה שימוש מעשי, שקול סקריפט שמעבד קבצים ומדווח על שגיאה אם קובץ לא קיים:
filename="example.txt"
if [ ! -f "$filename" ]; then
echo "$filename לא קיים!" >&2
exit 1
else
echo "מעבד את $filename"
fi
פלט לדוגמה ישירות בקונסול כאשר example.txt
לא קיים:
example.txt לא קיים!
אין ספריות צד שלישי ישירות ב-Bash לטיפול ב-stderr, שכן הכוונה מחודשת נתמכת כברירת מחדל ובדרך כלל מספיקה. עם זאת, ליישומים מורכבים יותר, ניתן להכניס מסגרות רישום או כלים חיצוניים לרישום כמו syslog
או log4bash
כדי לנהל את ה-stdout וה-stderr בצורה יעילה יותר.