การเขียนไปยังข้อผิดพลาดมาตรฐาน

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 ได้อย่างมีประสิทธิภาพยิ่งขึ้น.