Bash:
การเขียนไปยังข้อผิดพลาดมาตรฐาน
วิธีการ:
ใน Bash, คุณใช้ >&2
เพื่อเปลี่ยนทิศทางผลลัพธ์ไปยัง stderr นี่คือตัวอย่างพื้นฐาน:
echo "This is a normal message"
echo "This is an error message" >&2
การรันสคริปต์นี้จะแสดงข้อความทั้งสองที่คอนโซล แต่ถ้าคุณเปลี่ยนทิศทางพวกเขา, คุณสามารถแยก stdout ออกจาก stderr ได้ ตัวอย่างเช่น:
bash script.sh > output.txt 2> error.txt
output.txt
จะมีข้อความ "This is a normal message"
, ในขณะที่ error.txt
จะจับข้อความ "This is an error message"
.
สำหรับกรณีการใช้งานจริง, พิจารณาสคริปต์ที่ประมวลผลไฟล์และรายงานข้อผิดพลาดหากไฟล์ไม่มีอยู่:
filename="example.txt"
if [ ! -f "$filename" ]; then
echo "$filename does not exist!" >&2
exit 1
else
echo "Processing $filename"
fi
ตัวอย่างผลลัพธ์โดยตรงในคอนโซลเมื่อ example.txt
ไม่มีอยู่:
example.txt does not exist!
ไม่มี third-party libraries โดยตรงใน Bash สำหรับการจัดการ stderr เนื่องจากการเปลี่ยนทิศทางได้รับการสนับสนุนโดยเนื้อแท้และโดยทั่วไปแล้วเพียงพอ อย่างไรก็ตาม, สำหรับแอปพลิเคชันที่ซับซ้อน, กรอบการทำงานบันทึกข้อมูลหรือเครื่องมือบันทึกภายนอกเช่น syslog
หรือ log4bash
สามารถรวมเข้ากับเพื่อจัดการทั้ง stdout และ stderr ได้อย่างมีประสิทธิภาพยิ่งขึ้น.