shell脚本中的Scrapy命令在从java调用时不执行
我有一个调用scrapy的shell脚本shell脚本中的Scrapy命令在从java调用时不执行,java,bash,shell,scrapy,scrapy-spider,Java,Bash,Shell,Scrapy,Scrapy Spider,我有一个调用scrapy的shell脚本 #!/bin/bash export PATH=usr/local/bin/scrapy:$PATH 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 $PATH 在调用此脚本文件的ja
#!/bin/bash
export PATH=usr/local/bin/scrapy:$PATH
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 $PATH
在调用此脚本文件的java程序中,错误流表示找不到scrapy:命令
我在bash_概要文件中添加了scrapy路径,并在执行路径时得到结果
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脚本,效果很好。您的“路径”声明中缺少正斜杠,路径应该是目录,而不是程序 你有
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运行脚本时,我需要通过文件将这些添加到路径中,但是当直接运行脚本文件时,不需要将这些路径写入文件中
另外,scrapy似乎需要位于项目目录中,因此将cd添加到项目路径中您从java执行的脚本中的
echo$path
中得到了什么?代码段缺少斜杠,但echo输出没有。另外,echo输出表明/usr/local/bin
已在路径中。将$PATH作为脚本的第一行输出,并在输出流中查看Java认为它是什么。shell启动脚本可能正在修改路径,其方式与手动调用/bin/sh
(它不是/bin/bash
不是)。