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.
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.
Tags und Links named-pipes bash shell pipe file