
У меня проблема с простым чтением. Я читаю список элементов xml и затем работаю с ними. В какой-то момент мне нужно спросить, уверен ли я, и принять этот ответ в переменной. Моя проблема в том, что если я спрашиваю в "while read linea", "read -p ..." игнорируется, и я не могу ответить на вопрос.
xml2 < list | egrep "item" | egrep "url|pubDate|title" | while read linea;
do
case 1 in
$(($x<= 1)))
...
;;
$(($x<= 2)))
...
;;
$(($x<= 3)))
....
if [ $DIFERENCIA -lt $num_dias ];
then
...
read -p “Are you sure: ” sure
...
fi
...
;;
*)
let x=1
;;
esac
done
Спасибо
решение1
используйте вместо этого это:
read -p "Are you sure: " sure </dev/tty
Кавычки должны быть в формате ascii 0x22, а не UNICODE U-201c “
и U-201d ”
.
решение2
(для bash) Передайте всю командную строку в качестве входных данных в какой-либо другой файловый дескриптор 3
:
while read -ru 3 linea; do
read -p "Are you sure: " sure
echo "sure=$sure linea=$linea"
done 3< <(xml2 < list | egrep "item" | egrep "url|pubDate|title" )
И, пожалуйста, используйте правильный ascii для двойных кавычек: "
, а не U-201c “
и U-201d ”
.