यह शाब्दिक है, {fd}प्लेसहोल्डर नहीं है। मेरे पास एक स्क्रिप्ट है जो ऐसा करती है, और किसी भी चीज़ में स्रोत नहीं है, न ही यह कहीं और {{fd} का संदर्भ देता है। क्या यह वैध बैश है?
exec {fd}</dev/watchdog
यह शाब्दिक है, {fd}प्लेसहोल्डर नहीं है। मेरे पास एक स्क्रिप्ट है जो ऐसा करती है, और किसी भी चीज़ में स्रोत नहीं है, न ही यह कहीं और {{fd} का संदर्भ देता है। क्या यह वैध बैश है?
exec {fd}</dev/watchdog
जवाबों:
फाइल डिस्क्रिप्टर को लेने की बजाय और उम्मीद है कि यह उपलब्ध है:
exec 4< /dev/watchdog # Was 4 in use? Who knows?
यह नोटेशन शेल को उस फाइल डिस्क्रिप्टर को चुनने के लिए कहता है जो वर्तमान में उपयोग में नहीं है, उस डिस्क्रिप्टर पर पढ़ने के लिए फाइल को खोलें, और दिए गए वेरिएबल को नंबर असाइन करें ( fd)।
$ exec {fd}< /dev/watchdog
$ echo $fd
10
REDIRECTIONS। यह वास्तव में आप पर नहीं कूदता है, क्योंकि वे एक स्पष्ट उदाहरण नहीं देते हैं।
/dev/watchdogमैक ओएस एक्स पर मौजूद नहीं है, हालांकि; यह एक लिनक्स-विशिष्ट डिवाइस है।
फार्म:
{var}<filename
filenameचर में फाइल डिस्क्रिप्टर नंबर को पढ़ने और स्टोर करने के लिए शेल ओपन फाइल बनाई var। {var}पुनर्निर्देशन ऑपरेटरों के बीच कोई स्थान की अनुमति नहीं है , और फ़ाइल डिस्क्रिप्टर संख्या इससे अधिक या बराबर होगी 10।
यह सुविधा ksh2006 में (संस्करण ksh93r से ) से मूल थी , bashइसे bash-4.1-alpha2010 से बहुत बाद में कॉपी किया गया। 2007 से zshपहले के बदलाव को भी बनाया ।bashzsh 4.3.4
इसे रीडायरेक्शंस पर बैश मैनुअल सेक्शन में समझाया गया है ।
प्रत्येक पुनर्निर्देशन जो कि फ़ाइल डिस्क्रिप्टर नंबर से पहले हो सकता है, इसके बजाय फॉर्म { एनजी }} के एक शब्द से पहले हो सकता है । इस मामले में, प्रत्येक पुनर्निर्देशन ऑपरेटर को छोड़कर
>&-और<&-, शेल 10 से अधिक फ़ाइल डिस्क्रिप्टर आवंटित करेगा और इसे { varname } में असाइन करेगा । तो>&-या<&-{से पहले है VARNAME } का मूल्य VARNAME पास करने के लिए फ़ाइल वर्णनकर्ता परिभाषित करता है।