gpt4 book ai didi

java - 从java调用时bash脚本不等待命令完成

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:51 25 4
gpt4 key购买 nike

我正在运行以下 bash 脚本

scrapy crawl flipkart -a key="$1" -o "$2"flipkart.xml
scrapy crawl myntra -a key="$1" -o "$2"myntra.xml
scrapy crawl jabong -a key="$1" -o "$2"jabong.xml

echo " scrapy completed"

当通过终端执行时,bash 脚本按预期运行,因为它完成了一个 scrapy 命令的执行,然后另一个,但是当我尝试通过 java 调用它时,相同的脚本不执行 scrapy 命令。它执行 shell 脚本,因为我能够通过 java 中的输入流读取回显数据。

String command = "/Users/renny/Documents/WorkSpaces/Scrapy/tutorial/tutorial/crawls.sh";


String[] cmd = new String[]{"/bin/sh", command,key,formattedDate};
//Process p = Runtime.getRuntime().exec(cmd);

ProcessBuilder p = new ProcessBuilder(cmd);
Process p2 = p.start();

InputStream error = p2.getErrorStream();
for (int i = 0; i < error.available(); i++) {
System.out.println("" + error.read());
}

BufferedReader br = new BufferedReader(new InputStreamReader(p2.getInputStream()));
String line;

System.out.println("Output of running " + command + " is: ");

请建议我如何确保 scrapy 命令得到执行。

在批处理文件中,我认为我们可以调用 start 来确保命令在单独的提示中运行,我可以在 bash 脚本中做类似的事情吗

最佳答案

export PATH=usr/local/bin/scrapy:$PATH
export PATH=/usr/local/bin:$PATH

将导出路径添加到脚本文件解决了这个问题,感谢@RealSkeptic。

关于java - 从java调用时bash脚本不等待命令完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com