bash: как перенаправить stdin / stderr, а затем вернуть fd?

Я хочу, чтобы сценарий перенаправлял stdin и stderr в файл, делал кучу вещей, затем отменял эти перенаправления и принимал меры с содержимым файла . Я пытаюсь:

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

Что, кажется, делает то, что я хочу, но кажется довольно сложным. Есть ли более чистый / ясный способ сделать это?

7
задан George Young 27 April 2011 в 17:51
поделиться