ไม่นานมานี้ฉันสร้างสคริปต์และฉันเพิ่มการบันทึกรอบ ๆ มัน แต่ฉันลืมว่าการเปลี่ยนเส้นทางสำหรับการบันทึกทำงานอย่างไร :-(
ส่วนสำคัญของมันคือ:
#!/bin/bash
LOGFILE=/some/path/mylogfile
(
# here go my commands which produce some stdout
# and, if something goes wrong, also some stderr
) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 )
เมื่อฉันเรียกใช้สคริปต์ก็ไม่ได้พิมพ์อะไรไปแต่เพียงพิมพ์สิ่งที่จะไปstdout
stderr
Logfile ${LOGFILE}
จับทั้ง stdout และ stderr
เมื่อฉันรันสคริปต์และไม่มีผลลัพธ์ในเทอร์มินัลของฉันฉันรู้ว่าทุกอย่างเรียบร้อยดี หากมีผลลัพธ์ใด ๆ ฉันรู้ว่ามีบางอย่างผิดปกติและฉันสามารถตรวจสอบล็อกไฟล์เพื่อค้นหาว่าปัญหาคืออะไร
ส่วนของการเปลี่ยนเส้นทางที่ตอนนี้ไขปริศนาให้ฉันคือไวยากรณ์ของ: 2> >( some command )
ใครสามารถอธิบายสิ่งที่เกิดขึ้นที่นั่น?
echo <(date)
/dev/fd/63
ถ้าผมดำเนินการจะช่วยให้ฉันวันคือเนื้อหาของไฟล์แทนไปนี้:cat <(date)
Fri Nov 18 14:11:09 NZDT 2016