ошибки wget нарушают работу скрипта оболочки - как это предотвратить?

StackOverflow https://stackoverflow.com/questions/535623

  •  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 для перенаправления стандартной ошибки.В других операционных системах это может быть что-то другое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top