Прочитанная строка игнорируется

Прочитанная строка игнорируется

У меня проблема с простым чтением. Я читаю список элементов 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 .

Связанный контент