Java不会执行一个sh文件,而且永远不会结束

Java不会执行一个sh文件,而且永远不会结束,java,postgresql,sh,Java,Postgresql,Sh,我试图执行一个运行postgres命令的sh文件,但它永远不会结束 sh文件是: #/bin/bash 回应“我的论点$1$2$3$4”; psql-h$1-p$2-U$3-d template1-c“删除数据库,如果存在$4”; psql-h$1-p$2-U$3-d模板1-c“创建数据库$4”; 回显“操作完成”; 我的java方法如下所示: public void createDB(){ 试一试{ ProcessBuilder=新的ProcessBuilder(); 生成器命令(“sh”、

我试图执行一个运行postgres命令的sh文件,但它永远不会结束

sh文件是:

#/bin/bash
回应“我的论点$1$2$3$4”;
psql-h$1-p$2-U$3-d template1-c“删除数据库,如果存在$4”;
psql-h$1-p$2-U$3-d模板1-c“创建数据库$4”;
回显“操作完成”;
我的java方法如下所示:

public void createDB(){
试一试{
ProcessBuilder=新的ProcessBuilder();
生成器命令(“sh”、“c”、“ls”);
ProcessBuilder pb=newProcessBuilder(“/tmp/test.sh”、“localhost”、“5432”、“postgres”、“newDB”);
进程p=pb.start();
BufferedReader=新的BufferedReader(新的InputStreamReader(p.getInputStream());
字符串行=null;
而((line=reader.readLine())!=null)
{
系统输出打印项次(行);
}
}捕获(例外e){
系统输出打印项次(“ERORR”);
}
}
输出为:

我的参数localhost 5432 postgres newDB


但是永远不要执行第二条psql语句,有人能帮我吗。

解决方法如下:


public void createDB(){
试一试{
ProcessBuilder=新的ProcessBuilder();
生成器命令(“sh”、“c”、“ls”);
ProcessBuilder pb=newProcessBuilder(“/tmp/test.sh”、“localhost”、“5432”、“postgres”、“newDB”);
//设置环境变量密码
环境投入(“PGPASSWORD”、“123456”);
进程p=pb.start();
BufferedReader=新的BufferedReader(新的InputStreamReader(p.getInputStream());
字符串行=null;
而((line=reader.readLine())!=null)
{
系统输出打印项次(行);
}
}捕获(例外e){
系统输出打印项次(“ERORR”);
}
}

我通过环境变量传递密码。谢谢大家

你试过没有分号吗?他们不应该在那里尝试读取错误流以查看是否有任何有用的内容。此外,脚本在Java之外运行时是否工作?它可能正在等待输入密码entered@a_horse_with_no_name介意添加它作为答案:)