Wechsel vom Dateiinhalt zu STDIN im Piped-Befehl? (Linux Shell)

7

Ich habe ein Programm (das ich nicht geschrieben habe), das nicht dazu gedacht ist, Befehle aus einer Datei einzulesen. Das Eingeben von Befehlen in STDIN ist ziemlich langwierig, daher möchte ich es automatisieren können, indem ich die Befehle zur Wiederverwendung in eine Datei schreibe. Problem ist, wenn das Programm EOF erreicht, es endlos Schleifen versucht im nächsten Befehl lesen einen endlosen Strom von Menüoptionen auf dem Bildschirm.

Was ich gerne tun könnte, ist, eine Datei mit den Befehlen in das Programm über eine Pipe zu katapultieren und dann eine Art Shell-Magie zu verwenden, um sie von der Datei auf STDIN umschalten zu lassen, wenn sie den EOF der Datei erreicht.

Hinweis: Ich habe bereits überlegt, cat mit dem '-' für STDIN zu verwenden. Leider (ich wusste das vorher nicht) warten piped-Befehle auf die Ausgabe des ersten Programms, bevor sie das zweite Programm starten - sie laufen nicht parallel. Wenn es eine Möglichkeit gäbe, die Programme parallel zu dieser Art von Leitaktion laufen zu lassen, würde das funktionieren!

Irgendwelche Gedanken? Danke für jede Hilfe!

BEARBEITEN:

Ich sollte beachten, dass mein Ziel nicht nur darin besteht, zu verhindern, dass das System das Ende der Befehlsdatei erreicht. Ich möchte in der Lage sein, weiter Befehle von der Tastatur einzugeben, wenn die Datei EOF erreicht.

    
zslayton 13.10.2009, 15:38
quelle

4 Antworten

15

Ich würde etwas wie

tun %Vor%

Auf diese Weise wird, wenn die Datei mit den Befehlen fertig ist, das zweite cat Ihr Skript mit dem, was Sie danach auf stdin eingeben, füttern.

    
Idelic 14.10.2009, 07:22
quelle
2

Ich würde denken, expect würde dafür arbeiten.

    
Dennis Williamson 13.10.2009 16:37
quelle
2

Wie Idelic mit einfacherer Syntax antworten;)

%Vor%     
Guillaume 04.06.2015 00:29
quelle
1

Haben Sie versucht, etwas wie tail -f commandfile | command zu verwenden? Ich denke, das sollte die Zeilen der Datei zu Befehl leiten, ohne den Dateideskriptor danach zu schließen. Verwenden Sie -n , um die Anzahl der Zeilen anzugeben, die weitergeleitet werden sollen, wenn tail -f nicht alle von ihnen abfängt.

    
Michiel Buddingh 13.10.2009 15:42
quelle

Tags und Links