गोले में, exec1) फ़ाइल खोलने और पुनर्निर्देशन 2) वास्तविक execआईएनजी (वर्तमान प्रक्रिया छवि को दूसरी प्रक्रिया छवि के साथ बदलना) करता है।
ये execs पुनर्निर्देशन हैं।
सबसे पहले आप अनुप्रेषित ( exec 1> >(tee $LOGFILE)) stdoutएक प्रक्रिया प्रतिस्थापन-उत्पन्न एक एक समय पर से जुड़े पाइप के वर्णनकर्ता (1) teeप्रक्रिया है कि $LOGFILEइसके पहले तर्क के रूप में और फिर आप अनुप्रेषित stderrजहां वर्णनकर्ता के रूप में एक ही जगह पर वर्णनकर्ता (2) 1अब अंक (टी पाइप)।
यह ध्यान में रखते हुए कि दायरकर्ता को विरासत में मिला है, आपने भविष्य stdoutऔर stderrउत्पादन को पूरी तरह से बना दिया teeहै, जो इसे लिखता है $LOGFILEऔर जहां भी दायर की जाती है 1 मूल रूप से (शायद आपके टर्मिनल) को इंगित करता है।
नोट:
टी प्रक्रिया मूल स्टडआउट (= मूल फाइलस्क्रिप्ट 1) के लिए आउटपुट करती है क्योंकि, जैसा कि आप साधारण कमांड विस्तार और प्रक्रिया प्रतिस्थापन के लिए बैश (1) से सीख सकते हैं , प्रक्रिया प्रतिस्थापन ( अन्य विस्तार के साथ) पहले होता है। पुनर्निर्देशन निष्पादित हो जाता है, जिसका अर्थ है कि पुनर्निर्देशन शुरू होने के बाद होता है, एक ही फाइलस्क्रिप्ट 1 के साथ छोड़ देता है जो इसे मूल शेल से विरासत में मिला है। (यदि यह चारों ओर का दूसरा तरीका था, तो इसे अपने स्वयं के इनपुट को लिखने के लिए बनाया जाएगा, जो इसके गतिरोध के आधार पर इसे गतिरोध बना सकता है)।>() <()exec 1> >(tee "$LOGFILE") teeteetee