Gelesene Zeile wird ignoriert

Gelesene Zeile wird ignoriert

Ich habe ein Problem mit einem einfachen Lesen. Ich lese eine Liste von XML-Elementen und arbeite dann mit ihnen. An einem bestimmten Punkt muss ich fragen, ob ich sicher bin, und diese Antwort in einer Variablen akzeptieren. Mein Problem ist, dass „read -p ...“ ignoriert wird, wenn ich in die Zeile „while read“ frage, und ich die Frage nicht beantworten kann.

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  

Danke

Antwort1

verwenden Sie stattdessen dieses:

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

Anführungszeichen sollten ASCII 0x22 sein, nicht UNICODE U-201c und U-201d .

Antwort2

(für Bash) Geben Sie die gesamte Befehlszeile als Eingabe in einem anderen Dateideskriptor an 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" )

Und verwenden Sie bitte das korrekte ASCII für die Anführungszeichen: ", nicht U-201c und U-201d .

verwandte Informationen