Итак, я пишу скрипт, который будет выводить результат grep как массив, а затем перебирать фильтр для него для вывода в файл. Я тестирую его на своем собственном сайте, и wget работает как ожидалось и генерирует список URLS в spider.queue. Команда grep также работает с точки зрения фильтрации по ключевому слову, но когда я добавляю ее в цикл while и использую оператор if, чтобы проверить, существует ли она, я получу ошибку;While Loop in Bash Неожиданный символ
./spider.sh: 19: ./spider.sh: Синтаксическая ошибка: «(» неожиданная (ожидая «Done»)
Который приведет меня к мысли, что это проблема синтаксиса с одной из петель .
#!/bin/sh
# Usage - ./spider.sh searchterm www.website.com
## Parameters
search=$1
URL=$2
## Spider WGET
wget -r -e robots=off --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" http://$URL 2>&1 | grep '^--' 2>&1 | awk '{ print $3 }' | grep -v '\.\(css\|js\|png\|gif\|jpg\|JPG\)$' >> spider.queue
## Keyword filter with grep
while true
do
PROFILES=($(grep -l -r "$search" $URL))
for x in ${PROFILES[*]}
do
if grep -q $x crawler.queue; then
echo "Already Exists"
else
$x >> crawler.queue
fi
done
done
ли вы имеете в виду 'е cho "$ x" >> crawler.queue'? –
Вы правы, я должен был это сделать, пропустил это спасибо. К сожалению, я по-прежнему получаю ту же ошибку в строке 19 – I2obiN
Попробуйте указать все ваши переменные, например. 'wget ..." http: // $ URL "' и 'grep -q" $ x "crawler.queue' – miken32