A linha de leitura é ignorada

A linha de leitura é ignorada

Tenho problemas com uma leitura simples. Eu leio uma lista de itens xml e depois trabalho com eles. Em algum momento preciso perguntar se tenho certeza e aceitar essa resposta em uma variável. Meu problema é que se eu perguntar na linha "while read", o "read -p ..." será ignorado e não consigo responder à pergunta.

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  

Obrigado

Responder1

use este em vez disso:

read -p "Are you sure: " sure  </dev/tty

As cotações devem ser ascii 0x22, não UNICODE U-201c e U-201d .

Responder2

(para bash) Forneça toda a linha de comando como entrada em algum outro descritor de arquivo 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" )

E use o ascii correto para aspas duplas: ", não U-201c e U-201d .

informação relacionada