0

我有一个巨大的文件,其中包含许多指向要下载的各种类型文件的链接。每一行都是一个下载命令,例如:

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 行:`wget' http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc ''

我已经尝试过使用 URL 和“URL”两种方式来指定要下载的内容。

有没有办法让这样的脚本在无人看管的情况下运行?如果它只是跳过它无法下载的文件,我很好。

4

4 回答 4

6

不要(ab)使用外壳。

将您的 URL 保存到某个文件(比如说 my_urls.lst)并执行以下操作:

wget -i my_urls.lst

Wget 将自行处理报价等

于 2009-02-11T14:46:48.047 回答
1

我认为您需要在 URL 周围使用双引号 (") 而不是单引号 (')。

如果这仍然不起作用,请尝试转义括号字符()使用反斜杠:\(\)

你用的是哪个外壳?重击?zsh?

于 2009-02-11T06:33:06.393 回答
0

这并不能完全回答您的问题,但是:

以下两个命令都直接在 bash shell 中工作:

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'

你能检查一下其中任何一个对你有用吗?

于 2009-02-11T06:35:28.523 回答
0

似乎正在发生的事情是您的外壳正在使用 ( 字符。我会尝试在您的 URL 周围使用双引号 " 而不是单引号 '。

如果你想抑制错误,你可以在 unix 下使用 >/dev/null 来重定向标准输出或 2> /dev/null 来重定向标准错误。在其他操作系统下,它可能是别的东西。

于 2009-02-11T06:36:42.123 回答