
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 ”
.