2015-05-26 73 views
1

叫时,我有以下shell脚本调用scrapyScrapy命令不执行从Java

#!/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_profile文件和执行路径添加我得到

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

我使用以下运行该脚本文件中的结果scrapy路径代码

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脚本。

+0

你从脚本中的'回声$ PATH'得到什么用Java作为执行? –

回答

2

你缺少斜杠上的“路径”的声明,和路径应该是目录,而不是程序

你有

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

应该

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

代码段缺少斜线,但回显输出不是。此外,echo输出指出'/ usr/local/bin'已经在'PATH'中。 –

+0

输出$ PATH作为脚本的第一行,并在输出流中查看Java认为它是什么。 –

0

我包括

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

现在它似乎工作不知道为什么,但从java运行脚本时,我需要将这些添加到通过文件的路径,但直接运行脚本文件时,它不需要这些PATH被写入文件。

而且scrapy似乎需要在项目目录中,以便添加cd到项目路径

+0

你的shell启动脚本可能会以你手动调用'/ bin/sh'(不是'/ bin/bash')的方式修改'PATH'。 –