回答:
制御端末デバイスから読み取る:
read input </dev/tty
詳細:http : //compgroups.net/comp.unix.shell/Fixing-stdin-inside-a-redirected-loop
bash yourscript < /foo/barはユーザー入力を待ちますが、これはパスワードを読み取る場合にのみ許容されます。@GordonDavissonの回答は、他のすべての用途に適しています。
                    通常のstdinをユニット3にリダイレクトして、パイプライン内に取得し続けることができます。
{ cat notify-finished | while read line; do
    read -u 3 input
    echo "$input"
done; } 3<&0
ところで、実際にcatこの方法を使用している場合は、リダイレクトに置き換えれば、さらに簡単になります。
while read line; do
    read -u 3 input
    echo "$input"
done 3<&0 <notify-finished
または、そのバージョンでstdinとユニット3を交換できます。ユニット3でファイルを読み取り、stdinをそのままにしておきます。
while read line <&3; do
    # read & use stdin normally inside the loop
    read input
    echo "$input"
done 3<notify-finished
              read lineは通知終了read -u 3 inputからの読み取りですが、書かれたようにそれを実行した場合はコンソールからの読み取りです)?
                    このようにループを変更してみてください:
for line in $(cat filename); do
    read input
    echo $input;
done
単体テスト:
for line in $(cat /etc/passwd); do
    read input
    echo $input;
    echo "[$line]"
done
              2回読んだように見えますが、whileループ内の読み取りは必要ありません。また、catコマンドを呼び出す必要はありません。
while read input
do
    echo $input
done < filename
              readの動作を「正しくない[ファイル]から読み込もうとしているためfilename」と説明)と受け入れられた回答の両方から明らかです。