shell 脚本中的 Scrapy 命令在从 java 调用时未执行

Scrapy command in shell script not executing when called from java

我有以下 shell 调用 scrapy

的脚本
#!/bin/bash
export PATH=usr/local/bin/scrapy:$PATH
scrapy crawl flipkart -a key="" -o ""flipkart.xml
scrapy crawl myntra -a key="" -o ""myntra.xml
scrapy crawl jabong -a key="" -o ""jabong.xml

echo $PATH

在调用此脚本文件的 java 程序中,错误流显示 scrapy: command not found

我在 bash_profile 文件中添加了 scrapy 路径,在执行 PATH 时我得到了结果

renny$ echo $PATH
/usr/local/bin/scrapy:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

我在运行脚本文件中使用了以下代码

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();

int code = p2.waitFor();

如果我直接执行 shell 脚本就可以正常工作。

您的 'PATH' 声明中缺少正斜杠,路径应该指向目录,而不是程序

你有

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

应该是

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

我收录了

cd /Users/renny/Documents/WorkSpaces/Scrapy/tutorial
export PATH=usr/local/bin/scrapy:$PATH
export PATH=/usr/local/bin:$PATH 

现在它似乎工作正常但不确定为什么但是 运行 来自 java 的脚本我需要通过文件将它们添加到路径但是 运行 脚本直接文件就不需要把这些PATH写到文件里了。

另外scrapy好像需要在项目目录下所以把cd加到项目路径下