wget错误打破shell脚本 - 如何防止这种情况?

时间:2009-02-11 06:20:10

标签: shell error-handling wget

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

wget'URL1'

wget'URL2'

...

并且有成千上万的人。

不幸的是,有些网址看起来很丑陋,例如: http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc 它在浏览器中打开,但混淆了wget。

我收到了一个错误:

./ tasks001.sh:line 35:意外标记“1”附近的语法错误

./ tasks001.sh:35行:'wget'http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc''

我尝试了指定下载内容的网址和“网址”。

有没有办法让像这样的脚本无人值守? 我很好,如果它只是跳过它无法下载的文件。

4 个答案:

答案 0 :(得分:6)

不要(ab)使用shell。

将您的网址保存到某个文件(例如my_urls.lst)并执行:

wget -i my_urls.lst

Wget将自己处理引用等

答案 1 :(得分:1)

我认为你需要在网址周围使用双引号(“)而不是单引号(')。

如果仍然无效,请尝试使用反斜杠转义填充字符()\(\)

你使用的是哪个shell?击? zsh的?

答案 2 :(得分: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'

你能检查一下这些是否适合你?

答案 3 :(得分:0)

似乎正在发生的事情是你的shell正在使用(字符。我会尝试在你的网址周围使用双引号“而不是单引号”。

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