ошибки wget нарушают работу скрипта оболочки - как это предотвратить?
-
22-08-2019 - |
Вопрос
У меня есть огромный файл с множеством ссылок на файлы различных типов для загрузки.Каждая строка представляет собой одну команду загрузки, например:
wget 'URL1'
wget 'URL2'
...
и таких здесь тысячи.
К сожалению, некоторые URL-адреса выглядят действительно уродливо, как, например:http://www.cepa.org.gh/archives/research-working-papers/WTO4%20 (1)-charles.doc Он нормально открывается в браузере, но сбивает с толку wget.
Я получаю сообщение об ошибке:
./tasks001.sh:строка 35:синтаксическая ошибка рядом с неожиданным символом `1'
./tasks001.sh:строка 35:`файлу 'http://www.cepa.org.gh/archives/research-working-papers/WTO4%20 (1)-charles.doc''
Я пробовал как URL, так и 'URL' способы указания того, что загружать.
Есть ли способ заставить подобный скрипт работать без присмотра?Я не против, если он просто пропустит файл, который ему не удалось загрузить.
Решение
Я думаю, вам нужно использовать двойные кавычки ("), а не одинарные кавычки (') вокруг URL.
Если это все еще не сработает, попробуйте экранировать парные символы (
и )
с обратной косой чертой: \(
и \)
Какую оболочку вы используете?Ударить?зшш?
Другие советы
Не (ab) используйте оболочку.
Сохраните ваши URL-адреса в какой-нибудь файл (скажем, my_urls.lst) и выполните:
wget -i my_urls.lst
Wget будет обрабатывать цитирование и т.д. самостоятельно
Это не совсем ответ на ваш вопрос, но:
Обе следующие команды работают непосредственно в оболочке bash:
wget "http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc"
и
wget 'http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc'
Можете ли вы проверить, работает ли что-либо из этого для вас?
Похоже, что происходит то, что ваша оболочка что-то делает с ( символами.Я бы попробовал использовать двойные кавычки "вместо одинарных кавычек" вокруг вашего URL.
Если вы хотите подавить ошибки, вы можете использовать a >/dev/null в unix для перенаправления стандартного вывода или 2> /dev/null для перенаправления стандартной ошибки.В других операционных системах это может быть что-то другое.