EnterIch muss ein Skript schreiben, das beim Drücken eine Zeile zu einer Textdatei hinzufügt .
Aber wenn Ctrl+ Dgedrückt wird, muss ich diese Schleife in der Bash verlassen.
touch texttest.txt
LINE="0"
while true; do
read LINE;
if [ "$LINE" == "^D" ]; then
break
else
echo "$LINE" >> texttest.txt
fi
done
Ich habe derzeit so etwas, kann aber nicht herausfinden, wie ich die While-Schleife verlasse, wenn Ctrl+ Dstatt gedrückt wird Enter.
Antwort1
Du denkst zu viel darüber nach. Alles was du brauchst ist Folgendes:
cat > texttest.txt
Cat liest von STDIN, wenn Sie ihm nichts anderes gesagt haben. Da es von STDIN liest, reagiert es auf das Steuerzeichen Ctrl+, Dohne dass Sie es angeben müssen. Und da Ctrl+ D das einzige ist, das den Unterprozess beendet cat
, müssen Sie es nicht einmal in eine Schleife einbinden.
Antwort2
Folgendes würde genügen:
while read -r LINE ; do
echo "$LINE" >> texttest.txt
done
- Sie müssen die Datei nicht zuerst anfassen
LINE
Sie müssen die Variable nicht initialisieren- Ctrl+Dschließt stdin, was
read
zum Beenden mit einem Exit-Code ungleich null (false) führt