有两件事需要注意......
所以我有一个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正确执行的任何想法?
答案 0 :(得分:0)
如果要运行shell脚本,则必须显式调用shell并将脚本名称作为参数传递给它,如
bash /path/to/script/deploy.sh
Runtime.exec()
和ProcessBuilder
都不知道如何自己执行shell脚本,他们只知道如何执行二进制可执行文件。