【问题标题】:wget errors breaks shell script - how to prevent that?wget 错误会破坏 shell 脚本 - 如何防止这种情况发生?
【发布时间】:2009-02-11 06:20:09
【问题描述】:

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

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”两种方式来指定要下载的内容。

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

【问题讨论】:

    标签: shell error-handling wget


    【解决方案1】:

    不要(ab)使用外壳。

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

    wget -i my_urls.lst
    

    Wget 将自行处理引用等

    【讨论】:

      【解决方案2】:

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

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

      您使用的是哪个外壳?重击? zsh?

      【讨论】:

        【解决方案3】:

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

        以下两个命令都直接在 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'
        

        你能检查一下其中任何一个是否适合你吗?

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2017-10-15
            • 2012-03-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-07
            • 1970-01-01
            • 2014-04-06
            • 1970-01-01
            相关资源
            最近更新 更多