2011-10-26 15 views
0

シェルスクリプトは細かい手作業 シェルスクリプトは、Javaプログラムから実行ではないでしょう

  • 簡単なシェルスクリプトを実行します

    1. 右バットに注意するには、2つの事が....(エコーハロー)があること私はJavaを使ってうまく実行しました

    私はJavaプロセスを実行しようとしているシェルスクリプトを持っています。

    File sqlF = new File("path to deploy script"); 
    
    Process proc = rt.exec(sqlF + "/deploy.sh"); 
    proc.waitFor(); 
    
    System.out.println(proc.exitValue()); 
    

    このコードを実行すると、曖昧な戻り値 "1"が返されます。

    ここでシェルスクリプト(私は問題はここから生じるかもしれ想像ので)です:

    #!/bin/bash 
    mysql -u XXXX -h XXXXX < XXXXX.sql 
    mysql -u XXXX -h XXXXX database < DEPLOY-HELPER.sql 
    

    が、これは、Javaから正しく実行されないだろう理由として任意のアイデア?あなたはシェルスクリプトを実行したい場合は

  • +1

    あなたのシェルスクリプトで 'set -vx'をオンにして、stderrとstdoutをファイルにリダイレクトして、何が起こっているのかを確認します。まず、mysqlへのパスを設定する必要があると思います。クイックテストの場合は、 'mysql'を'/full/path/to/mysql'に置き換えてください。がんばろう。 – shellter

    +0

    あなたはlinuxでそれを実行していますか?また、java内でプロセスを呼び出すと、パスをセットアップしたり、システムから変数を適切にインポートしたりしない可能性があります。 – gigadot

    +0

    @gigadotはい、Linux上です。そして私はそのシェルターを試してみましょう!ありがとう。 – Max

    答えて

    0

    明示的にシェルを起動し、

    bash /path/to/script/deploy.sh 
    

    Runtime.exec()ProcessBuilderシェルスクリプト自体を実行する方法を知っているどちらのように、引数としてそれをスクリプトの名前を渡す必要がありますバイナリ実行可能ファイルの実行方法のみを知っています。

    関連する問題