Shell Script und Datenübergabe

S

Spiky

hi alle zusammen,

wenn es um einfache scripte geht habe ich kein problem doch hier bin ich rätseln...
ich soll ein shell script schreiben, welches ein programm(a) anstößt. dieses gibt ein ergebnis/datei aus. dann soll ein zweites programm angestoßen werden(selbes script) welches das ergenis/datei von dem programm(a) benötigt um arbeiten zu können.
wie geht das :think: ?
könnt ihr mir helfen oder einen link geben wo ich so etwas finden kann?

MFG
Spiky
 
Du musst uns schon ein paar Infos geben. Welche Programme sind es, was muss übergeben werden.

Vielleicht reicht bei Dir auch schon ne Pipeline, um Daten von Programm a zu Programm b zu leiten. (siehe "man bash")

Gruss, Phorus
 
ok, hab das programm selber nicht geschrieben...
also die daten die weitergegeben weden sollen werden am anfang festgelegt(manuell) und befinden sich in textdokumenten,wo sich auch das script befindet.
die müssen also weitergegeben werden und von dem anderen programm als input weiterverarbeitet werden.
:hilfe2:
guck mir jetzt mal "man bash" pipeline an. dank dir schonmal!

MFG
Spiky
 
hatte gerade eine idee,
ich weiss nur nicht ob es nicht auch eleganter geht.
kann ich die input-werte des programm(a) nicht einfach in den ordner des anderen progarmms(b) kopieren und beim start von (b) die kopierten daten als input-werte angeben???
oder gehts besser?

MFG
Spiky
 
wie liest denn progb die ergebnis datei von proga, als stdin oder gibt man den dateinamen als parameter beim aufruf von progb mit?
 
naja,
ich habe ein text dokument welches input-werte für programm (a) enthält, das programm verarbeitet nun die diese werte und würft mehrere text dokumente mit berechneten ergebnissen aus. diese sind nun grundlage für programm (b) und müssen nun als input beim aufruf von programm (b) angegeben werden.
muss man sich wie ein petrinetz vorstellen.

mfg
Spiky
 
ein programm kann man auf verschiedene arten mit daten füttern, die frage ist wie soll das hier gemacht werden? einfach die namen der input dateien als parameter beim programm aufruf mitgeben? wenn ja, wo ist das problem? :think:
 
achso
ja, es reicht wenn die namen der input dateien als parameter angegeben werden.
die programme liegen in verschiedenen verzeichnissen.

programm (a)
home/.../.../test/java/test/start.sh

programm (b)
home/.../.../test/pool/test/pool.sh
 
ja aber was ist jetzt die frage?

aufruf von programm b:
Code:
home/.../.../test/pool/test/pool.sh home/.../.../test/java/test/datei1 home/.../.../test/java/test/datei2
?(
 
ich denke ich bin da zu kompliziert an die sache rangegangen ...sorry...
ich denke es reicht wenn ich die ergebnisse von programm (a) in den ordner von programm (b) kopiere.
das shell skript läuft dann linear durch, führt das programm (a) aus welches die ergebnisse liefert. dann werden diese ergebnisse per script in den anderen ordner kopiert und nun das programm (b) aufgerufen was diese dateien als input nimmt.
soweit klappts...wenn ich das kopieren per hand mache läufts...

is gar nicht so einfach an fremden arbeiten weiterzuschreiben...vor allem wenn man nicht ganz so viel ahnung in diesem bereich hat.:think:

mal gucken ob ich das kopieren hinbekomme...

MFG
Spiky
 
Spiky schrieb:
achso
ja, es reicht wenn die namen der input dateien als parameter angegeben werden.
die programme liegen in verschiedenen verzeichnissen.

programm (a)
home/.../.../test/java/test/start.sh

programm (b)
home/.../.../test/pool/test/pool.sh

Hallo
Nur mal als kurze Ergänzung zum Verständnis:
Eine Pipe macht ja nix Anderes, als <STDOUT> des ersten nach <STDIN> des zweiten das wieder zum dritten usw. zu verfüttern.
Natürlich können das auch eigene FILE-DESKRIPTOREN oder <STDERR> sein.
Ob und wie du ein Programm in einer Pipe verwenden kannst, richtet sich immer nach den Programmen selbst.

Ein Programm, welches als Parameter Dateinamen erwartet, kannst du in einer Pipe nur hinter einem Programm verwenden, was auch Dateinamen ausgibt.

Desweiteren gilt es zu beachten, dass jederzeit <STDERR> dazwischenfunken kann.

Dazu mal ein nicht funktionierendes Beispiel:
Wenn ich z.B Datei foo zum tar-Archiv foo.tar hinzufügen will und der Inhalt der datei foo
bla
fasel
bar

sei:

cat foo | tar -cf foo.tar

WIRD NICHT FUNKTIONIEREN!
Weil cat den Inhalt der Datei foo , statt den Dateinamen ausgibt und tar wird das Erstellen eines leeren Archives ..feige verweigern.. ;)

Habe ich aber in der Datei foo gültige Dateinamen mit gültigem Pfad stehen, werden alle zum Archiv foo.tar hinzugefügt.

Gibt es die Datei foo nicht, wird tar die Fehlermeldung von cat als Eingabe erhalten, und jedes einzelne Wort als Dateinamen interpretieren, und natürlich meckern, dass es die Dateien nicht findet.

Gruß Wolfgang
Ergänzung:
Die Frage die du dir Stellen musst, um dein Problem zu lösen lautet:
Wo bekomme ich die Dateinamen die Programm a erzeugt her?

Wenn du das gelöst hast, dann ist es ganz einfach programm b damit zu füttern.
Wenn Programm a die Namen nicht ausgibt, dann hilft dir eventuell find oder ls weiter.
 
Zuletzt bearbeitet:
ok leute

habs jetzt erstmal hinbekommen das alles läuft.
danke für eure hilfe...:))

aber ihr werdet sicher nochmal was von mir hören :D :brav:

MFG
Spiky
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Welches Linux/Unix für ehemaligen OSX Nutzer?

Hilfe bei backup-script

patch erstellen: Probleme mit autotools?

screen nach Programmende aktiv halten oder in die Shell

Zurück
Oben