# Bash und Eingabeumlenkung



## Rene Albrecht (29. August 2007)

Hi,

ich habe ein Problem mit Ein- und Ausgabeumlenkung in einem Bash-Skript, vielleicht weiß ja von Euch jemand mehr als google. 

Folgende Problematik:
Ich möchte ein Skript schreiben, das u.a. ein Programm steuern soll. Das möchte ich über eine Ein- und Ausgabeumlenkung, die ich jedoch nicht zum laufen bekomme. Die Ausgabe des Programms (über stdout/stderr) soll zur Laufzeit vom Skript analysiert und ggf. (durch Umleitung von stdin) entsprechende Eingaben zum Programm geschickt werden. Allerdings bekomme ich das nicht wirklich hin: bei mir sieht das so aus, dass das Programm seine Ausgaben macht (sichtbar durch tail -f auf die Ausgabe-Datei), die Schleife zum Auslesen der Ausgaben von stdout/stderr jedoch erst nach Beendigung des Programms durchlaufen wird.

Hat jemand so etwas vielleicht schon einmal geschrieben und kann mir Tipps geben, wie ich evtl. skriptgesteuert in einen Programmablauf eingreifen kann? Die Eingaben sind an bestimmte Bedingungen geknüpft, das Schreiben einer einfachen Datei mit Inputs hilft mir also nicht weiter.

Gruß & Dank
René


----------



## andy72 (29. August 2007)

Wie sieht Dein Shell-Script denn aus ?


----------



## Rene Albrecht (29. August 2007)

Was grds. funktioniert ist 
	
	
	



```
{Programm} | while read line
do
   echo xxx$line
done
```
 für die Umleitung der Ausgabe oder 
	
	
	



```
{Programm} < tmp.input
```
 zur Umlenkung von stdin.

Aber wie gesagt, ich will die Ausgabe des Kommandos zur Laufzeit auswerten und darauf reagieren können. Alles was ich bis jetzt hinbekommen habe ist, dass die Auswertung NACH Beendigung des Programms erfolgt ist. Da die Bash I/O-Redirection ermöglicht dachte ich, dass es gehen könnte. Ich hab mir das entsprechende Kapitel im Advanced Bash-Scripting Guide angeschaut, bin aber trotzdem nicht weiter...

Ein richtiges Skript kann ich noch nicht vorweisen, ohne sinnvolle Lösung dieses Problems brauch ich das Skript gar nicht schreiben, weil das die Kernaufgabe ist. Ich wollte mir lästigen manuellen Input auf der Konsole über das Skript ersparen. In C möchte ich das nur ungern machen, weil auch meine Kollegen solch ein Skript nutzen wollen und verstehen sollen.


----------



## andy72 (29. August 2007)

Heisst das,Du willst zur Laufzeit in die While-Schleife eingreifen ? Soweit ich weiss, ist das nicht möglich - ABER: vielleicht kann man da was machen,wenn das Programm selbst als Hintergrundprozess läuft oder man greift damittels einer Pipe ein - anders kann ich mir das kaum vorstellen *grübel*


----------



## Rene Albrecht (30. August 2007)

Das mit dem Hintergrundprozess hab ich auch schon versucht, weil die while-Schleife ja erst greift, wenn das Programm beendet ist. Da es aber nicht beendet wird, bevor bedingte Eingaben gemacht werden, hängt das Skript dann. Aber wie gehe ich da ran?


----------

