Shell脚本无法从Java程序运行

时间:2011-10-26 18:47:01

标签: java shell process

有两件事需要注意......

  1. shell脚本手动运行
  2. 我编写的一个简单的shell脚本(echo hello)可以通过java
  3. 运行

    所以我有一个shell脚本,我试图通过Java进程运行。

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

    当我运行此代码时,我得到一个模糊的返回值“1”。

    这是shell脚本(因为我想这个问题可能来自这里):

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

    关于为什么这不能从Java正确执行的任何想法?

1 个答案:

答案 0 :(得分:0)

如果要运行shell脚本,则必须显式调用shell并将脚本名称作为参数传递给它,如

bash /path/to/script/deploy.sh

Runtime.exec()ProcessBuilder都不知道如何自己执行shell脚本,他们只知道如何执行二进制可执行文件。

相关问题