นั่นคือตัวอักษร{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 จะกำหนดตัวให้คำอธิบายไฟล์ที่จะปิด