execリダイレクト

exec redirect-out
exec使ってますか?bashの組み込みコマンドのexecはコマンドの変更の他にリダイレクトの動的変更ができます。こんなシェルスクリプトを実行すると、何もしなければファイルディスクリプタ1番の/dev/stdoutに出力されます。
#!/bin/sh
echo "first"

これを以下のようにすると、途中で全体のファイルディスクリプタをexecコマンドで変更できます。この場合、firstはstdoutにsecondはfileに出力されます。

#!/bin/sh
echo "first"
exec > file
echo "second"
exec redirect-in
リダイレクトインも同様に動的変更ができますが、おもな使い所はwhile readだと思います。普通ファイルから1行ずつ読み込んで処理を行う場合は
while read LINE; do
  # do something...
done < file
としますが、標準入力を変更する事で以下のように書くことができます。
exec < file
while read LINE; do
  # do something...
done

doneのところまで読み進まずとも何のファイルを入力とするのかわかる点がメリットでしょうか。デメリットは他人が読んだ時にわからない可能性が高い点です!調べざるを得なかったよ!他人が読みやすいプログラムを書いたほうが絶対に良いので、使わない方が良いでしょう!