Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
shell脚本中的Scrapy命令在从java调用时不执行_Java_Bash_Shell_Scrapy_Scrapy Spider - Fatal编程技术网

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

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

我有一个调用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
在调用此脚本文件的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
不是)。