นั่นคือตัวอักษร{fd}ไม่ใช่ตัวยึดตำแหน่ง ฉันมีสคริปต์ที่ทำสิ่งนี้และไม่ได้แหล่งข้อมูลใด ๆ และไม่มีการอ้างอิง {fd} ที่อื่น ทุบตีนี้ถูกต้องหรือไม่
exec {fd}</dev/watchdog
นั่นคือตัวอักษร{fd}ไม่ใช่ตัวยึดตำแหน่ง ฉันมีสคริปต์ที่ทำสิ่งนี้และไม่ได้แหล่งข้อมูลใด ๆ และไม่มีการอ้างอิง {fd} ที่อื่น ทุบตีนี้ถูกต้องหรือไม่
exec {fd}</dev/watchdog
คำตอบ:
แทนที่จะต้องเลือก file descriptor และหวังว่ามันจะพร้อมใช้งาน:
exec 4< /dev/watchdog # Was 4 in use? Who knows?
สัญลักษณ์นี้ขอให้เชลล์เลือก descriptor ไฟล์ที่ไม่ได้ใช้งานอยู่เปิดไฟล์สำหรับอ่านบน descriptor นั้นและกำหนดหมายเลขให้กับตัวแปรที่ระบุ ( fd)
$ exec {fd}< /dev/watchdog
$ echo $fd
10
REDIRECTIONSของส่วน มันไม่ได้โดดไปที่คุณจริงๆเพราะพวกเขาไม่ได้ให้ตัวอย่างที่ชัดเจน
/dev/watchdogไม่มีอยู่ใน Mac OS X เช่นกัน มันเป็นอุปกรณ์เฉพาะของ Linux
แบบฟอร์ม:
{var}<filename
ทำให้เปิดไฟล์เปลือกสำหรับการอ่านและจำนวนบ่งเก็บไฟล์ในตัวแปรfilename varไม่มีที่ว่างระหว่างได้รับอนุญาตให้เป็นผู้ประกอบการเปลี่ยนเส้นทางและจำนวนไฟล์อธิบายจะมากกว่าหรือเท่ากับ{var}10
คุณลักษณะนี้จากเดิมksh(จากรุ่น ksh93r ในปี 2006) bashคัดลอกมันมากในภายหลังbash-4.1-alphaจากปี 2010 zshนอกจากนี้ยังได้ดำเนินการเปลี่ยนแปลงเร็วกว่าbashจากzsh 4.3.4ในปี 2007
นี่คือคำอธิบายในส่วนคู่มือการทุบตีในการเปลี่ยนเส้นทาง
การเปลี่ยนเส้นทางแต่ละครั้งที่อาจนำหน้าด้วยหมายเลขตัวอธิบายไฟล์อาจนำหน้าด้วยคำของรูปแบบ { varname } ในกรณีนี้สำหรับโอเปอเรเตอร์การเปลี่ยนเส้นทางแต่ละตัวยกเว้น
>&-และ<&-เชลล์จะจัดสรรไฟล์ descriptor มากกว่า 10 และกำหนดให้กับ { varname } หาก>&-หรือ<&-นำหน้าด้วย { varname } ค่าของvarname จะกำหนดตัวให้คำอธิบายไฟล์ที่จะปิด