1

私はこれがそれを行うための不完全な方法であることを知っています。呼び出し元のシェルスクリプトでJavaプログラムで動的に生成された文字列をキャプチャし、後で使用する必要があります。

また、これは既存のcshファイルで実行されます。

putenv / setenvを使用して環境変数にエクスポートするオプションを検討しました...それはより良いオプションですか?もしそうなら、それをどのように使用しますか?

ネット上には、sentenv()またはputenv()を効果的に使用する方法と、それらのためにインポートするライブラリに関するサンプルコードが不足しているようです。

getenv()メソッドを持つシステムクラスは、私のputenv()またはsetenv()を表示しません。どんな助けでも大歓迎です。

ありがとう。

4

2 に答える 2

2

bashの場合と同じように、バッククォート構文を使用して、コマンド置換を使用できるはずです(最近のbashでは、より使いやすい$ -syntaxが推奨されます)。そのようです:

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

または非常によく似たもの

環境を使用することはできません。それを使用して「逆方向」に通信することはできません。子プロセスは親の環境を変更できません。

更新:例に「set」キーワードを追加しました、d'oh。

于 2009-05-07T11:30:53.647 に答える
0

最初の答えから拡張する:

あなたはおそらくこれをしたいと思うでしょう:$ A = java MyProgram | grep <something> $ echo $ A

MyProgramが複数行を出力すると仮定して、キャプチャしたいものはどこにありますか。

JavaプログラムがSystem.out.print...の代わりにSystem.err.print...を使用する場合は、$A=に拡張する必要があります。java MyProgram 2>&1 | grep <something>

それが役に立てば幸い :-)

于 2009-05-07T11:49:46.907 に答える