Вы можете использовать опцию -u
read
, которая указывает дескриптор файла:
while read -u 9 -r line; do
echo $line
read -p 'Press ENTER ' input_user
done 9<file.txt
-u 9
в сочетании с 9<file.txt
означает, что чтения в цикле while
и «регулярные» операторы read
все еще поступают со стандартного ввода.
Как правило, вы можете выбрать любой дескриптор файла, который еще не использовался - 0
, 1
и 2
являются стандартным вводом, выводом и ошибкой соответственно. Я обычно начинаю с 9
и работаю по мере необходимости, в зависимости от количества дескрипторов файлов, к которым мне нужно получить доступ одновременно.
Пример стенограммы:
pax$ ./qq.sh
line 1
Press ENTER <ENTER pressed>
line 2
Press ENTER <ENTER pressed>
line 3
Press ENTER <ENTER pressed>
line 4
Press ENTER <ENTER pressed>
pax$ _