मैं एक स्क्रिप्ट को एक फ़ाइल में stdin और stderr को पुनर्निर्देशित करना चाहता हूं, सामान का एक गुच्छा करें, फिर उन पुनर्निर्देशन को पूर्ववत करें और फ़ाइल सामग्री पर कार्रवाई करें। मैं कोशिश कर रहा हूं:बैश: stdin/stderr को पुनर्निर्देशित करने के लिए कैसे बाद में fd को वापस लाएं?
function redirect(){
exec 3>&1
exec 4>&2
exec 1>outfile 2>&1
}
function undirect(){
exec 1>&3
exec 2>&4
}
echo first
redirect
echo something
cat kjkk
undirect
if some_predicate outfile; then echo ERROR; fi
जो मुझे लगता है कि ऐसा करने लगता है, लेकिन यह अपेक्षाकृत जटिल लगता है। क्या ऐसा करने के लिए एक क्लीनर/स्पष्ट तरीका है?
या यहां तक कि वर्तमान खोल में: '{गूंज कुछ; बिल्ली afile; }> आउटफाइल 2> और 1' –
@glenn; सही। पहला ऐसा हो सकता है, शायद बेहतर भी .. मैं संपादित करूंगा – falstro