2015-05-26 70 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'。 –