2010-11-29 5 views
0

я, когда я введите следующую команду в Cygwin:Bash Command Script Выпуск

bin/nutch index crawl/crawldb crawl/linkdb crawl/segment/* 

то двоичная работает нормально. Когда я помещаю ту же самую строку в мой сценарий bash:

#!/bin/bash/ 
bin/nutch index crawl/crawldb crawl/linkdb crawl/segment/* 

У меня ошибка, так как некоторые файлы не существуют. Это может быть характерно для Nutch, который является программой, которую я запускаю, но я думаю, что это больше связано с тем, как я вызываю команду в скрипте. Любые идеи о том, что не так и как это исправить? (Да, я использую автодополнение)

EDIT:

Сценарий:

#!/bin/bash 
/home/Dan/apache-nutch-1.2/bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb crawl/segments/* 

я запускаю команду:

$ pwd 
/home/Dan/apache-nutch-1.2 
$ ./nutch.sh 

выход я получаю это:

Indexer: starting at 2010-11-29 15:15:44 
Indexer: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/C:/cygwin/home/Dan/apache-nutch-1.2/ 
/crawl_fetch 
Input path does not exist: file:/C:/cygwin/home/Dan/apache-nutch-1.2/ 
/crawl_parse 
Input path does not exist: file:/C:/cygwin/home/Dan/apache-nutch-1.2/ 
/parse_data 
Input path does not exist: file:/C:/cygwin/home/Dan/apache-nutch-1.2/ 
/parse_text 
    at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:190) 
    at org.apache.hadoop.mapred.SequenceFileInputFormat.listStatus(SequenceFileInputFormat.java:44) 
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:201) 
    at org.apache.hadoop.mapred.JobClient.writeOldSplits(JobClient.java:810) 
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:781) 
    at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:730) 
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1249) 
    at org.apache.nutch.indexer.Indexer.index(Indexer.java:76) 
    at org.apache.nutch.indexer.Indexer.run(Indexer.java:97) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
    at org.apache.nutch.indexer.Indexer.main(Indexer.java:106) 

С уважением, ~ DS

+0

убедитесь, что `/ bin/bash` - правильный путь. Кроме того, `bin/nutch` является относительным путем. – khachik 2010-11-29 19:58:24

+0

Я проверил другие команды в скрипте, используя этот каталог bin/nutch, и они отлично работали. Я полагаю, это означает, что все в порядке. В чем разница между запуском команды в скрипте и в командной строке? Есть ли способ полностью преодолеть разрыв между 2? – 2010-11-29 20:01:53

ответ

1

две вещи:

  1. У вас есть слэш после «баш» в притон в начале сценария - удалите его, он должен просто читать #!/bin/bash. Также проверьте, есть bash в /bin.
  2. Сценарий попытается выполнить гайку из каталога bin в вашей конкретной папке. Поэтому, если вы в $HOME, и если у вас есть путь $HOME/bin/nutch, то с вами все будет в порядке. Но тогда, если вы перейдете на /tmp, тогда он будет терпеть неудачу, поскольку нет такого пути, как /tmp/bin/nutch. Вам лучше дать полный абсолютный путь к nutch в первую очередь.