Wie kann ich die Eingabe von einem Shell-Skript, das mit einer Pipe aufgerufen wird, ohne das Risiko der Katze warten auf Eingabe für immer fangen?Shell: Catch Benutzereingaben mit Katze
echo "hello world" | mysript.sh
Im Skript versuche ich mit dem Eingang zu holen:
input=$(cat)
Aber in einigen Fällen cat
Befehl das gesamte Skript Timeout verursacht, weil es für die Eingabe wartet.
Sie möchten die Eingabe abfangen, aber nicht auf Eingaben warten? –
Der Eingang muss mit EOF = Strg + D enden. –
Verwenden Sie stattdessen 'read' in Ihrem Skript. Sie können Zeile für Zeile lesen, und Ihre Shell unterstützt möglicherweise zusätzliche Tools wie Timeouts und Einzelzeichen-Lesevorgänge. – ghoti