добрый день
столкнулся со странным поведением bash-цикла
понятно, что мне что-то не понятно, вот хотелось бы уточнить, что именно :о)
run.sh
#!/bin/sh
set -e; clear
LST=line.lst
msg(){ echo -e "\n###\n$1, press ENTER to continue...\n###\n"; read; }
msg "msg DEBUG"
while read LINE
do
echo "echo LINE = $LINE"
done < $LST
while read LINE
do
msg "msg() LINE = $LINE"
done < $LST
echo -e "\n### OK ###"
line.lst
line_1
line_2
<blah-blah-blah...to>
line_9
output
###
msg DEBUG, press ENTER to continue... ###!!! тут скрипт ожидает нажатия на ENTER
###
echo LINE = line_0
echo LINE = line_1
echo LINE = line_2
echo LINE = line_3
echo LINE = line_4
echo LINE = line_5
echo LINE = line_6
echo LINE = line_7
echo LINE = line_8
echo LINE = line_9
###
msg() LINE = line_0, press ENTER to continue... ###!!! тут скрипт проскакивает как угорелый
###
###
msg() LINE = line_2, press ENTER to continue... ###!!! аналогично
###
###
msg() LINE = line_4, press ENTER to continue... ###!!! ...
###
###
msg() LINE = line_6, press ENTER to continue... ###!!! ...
###
###
msg() LINE = line_8, press ENTER to continue... ###!!! ...
###
### OK ###
- в цикле не отрабатывается read/ожидание нажатия на ENTER
- отработка цикла (чтение файла) происходит с пропуском четных строк
...
slackware 12.2/14.2
p.s. видимо из-за использования read в цикле чтения файла ...
как бы так выкрутиться в таком случае?
- что бы функция msg() - всегда ожидала нажатия на ENTER
- что-бы цикл был без пропуска