2009-05-07 4 views
1

Ich weiß, das ist eine lahme Art, es zu tun. Wir müssen eine Zeichenfolge erfassen, die in einem Java-Programm im aufrufenden Shell-Skript dynamisch generiert wird, und sie später verwenden.Ist es möglich, eine system.out.print von Java-Programm in einer csh-Variable zu erfassen?

Auch dies ist in einer bestehenden csh-Datei zu tun.

Wir haben die Option betrachtet, sie mit putenv/setenv in eine Umgebungsvariable zu exportieren ... ist das eine bessere Option? Wenn ja, wie benutzt man es?

Es scheint Mangel an Beispielcode im Netz zu geben, wie man sentenv() oder putenv() effektiv benutzt und welche Bibliotheken für dasselbe importieren.

Systemklasse, die die getenv() -Methode hat, zeigt nicht meine Putenv() oder setenv(). Jede Hilfe wird sehr geschätzt.

Danke.

Antwort

2

Sie sollten einfach command substitution verwenden können, indem Sie die Backtick-Syntax genauso verwenden wie in bash (in der heutigen Zeit wird die besser verwendbare $ -Syntax empfohlen). Wie so:

$ set A=`java MyProgram` 
$ echo $A 

oder etwas sehr ähnliches

Sie die Umwelt nicht verwenden können; es ist nicht möglich, "rückwärts" zu kommunizieren; Ein untergeordneter Prozess kann die Umgebung der übergeordneten Umgebung nicht ändern.

AKTUALISIERT: Das Keyword 'set' wurde im Beispiel 'oh' hinzugefügt.

+0

Ich benutze eine Csh ... würde A = 'Java MyProgram' arbeiten ODER ich brauche Set A =' Java MyProgram' –

+0

Wenn ich A = 'Java MyProgram' verwende ... es gibt mir A: Command nicht gefunden –

+0

@Devang: richtig, für csh müssen Sie explizit 'set' verwenden, änderte ich das Beispiel. Es tut uns leid. – unwind

0

von der ersten Antwort Erweiterung:

Sie wahrscheinlich dies tun wollen: $ A = java MyProgram | grep <something> $ echo A $

wo ist das, was Sie aufnehmen möchten, vorausgesetzt, die MyProgram Ausgabe mehr als ein Linie.

Wenn das Java-Programm System.err.print verwendet ... statt System.out.print .... Sie zu $ A verstärkt brauchen = java MyProgram 2>&1 | grep <something>

hoffen, es hilft :-)

+0

Eigentlich brauche ich das ganze Ergebnis ... brauche ich nicht wirklich zu grep ... auch mein pain-point genau jetzt, damit es in einem csh-Skript funktioniert. Es funktioniert gut in einem ksh ... aber csh gibt mir entweder merkwürdige Fehler oder gibt nichts zurück ... danke für deine Hilfe. –