LINUX.ORG.RU

[bash] занятый stdin

 


0

1

Всем привет. Нужен совет/помощь в написании небольшого скрипта.

Цель: считать построчно файл, после считывания каждой строки спросить у пользователя подтверждение на обработку этой самой строки и обработать, если тот ответит да.

Собственно пробую так:

cat $filepath | while read -r line;
do
#что то происходит с $line
echo "Обработать? [y/n]";
read ans;
#что то происходит или не происходит в зависимости от ответа
done;
Но не работает, разумеется.

Как правильно сделать, подскажите?


Недавно смотрел в bashe-е зарезервированные ключевые слова и откопал «select». Посмотрите, это не оно?

Если решать задачу вашим способом, то можно поиграться с дескрипторами. Смотрите соответствующий раздел здесь

undertaker ★★
()
Ответ на: комментарий от undertaker

Пасиб, я даже уже пробовал, но пока не получилось.)

mete0
() автор топика
Ответ на: комментарий от Jetty

Это тоже пробовал, но for работает «не так» если в строке пробел. А в моём случае это критично)

mete0
() автор топика

Во, получилось вот так сделать:

exec 4<$filename;
while read line <&4;
do
	echo "Обработать "$line" ?";
	read asq;
	if [ "$asq"="y" ]; then
		echo "обрабатываем";
	else
		echo "мимо";
	fi;
done;
Это не костыль надеюсь?)

mete0
() автор топика
Ответ на: комментарий от mete0

Это не костыль, это «по-пацански»... в смысле правильно :)

Jetty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.