【问题标题】:wget with errorlevel bash output带有错误级别 bash 输出的 wget
【发布时间】:2011-05-06 08:27:57
【问题描述】:

我想创建一个 bash 文件 (.sh),它执行以下操作:

我将脚本称为 ./download.sh www.blabla.com/bla.jpg

脚本必须回显,然后如果文件已下载...

我该怎么做?我知道我可以使用错误级别,但我是 linux 新手,所以...

提前致谢!

【问题讨论】:

    标签: linux bash centos


    【解决方案1】:

    Linux 中的应用程序通常会设置环境变量 $?关于失败。你可以检查这个返回码,看看它是否给你带来任何 wget 错误。

    #!/bin/bash
    wget $1 2>/dev/null
    export RC=$?
    if [ "$RC" = "0" ]; then
       echo $1 OK
    else
        echo $1 FAILED
    fi
    

    您可以将此脚本命名为 download.sh。使用 chmod 755 将权限更改为 755。使用您要下载的文件的名称调用它。 ./download.sh www.google.com

    【讨论】:

    • Ok.. 你能给我举个例子吗,所以当文件下载时,脚本会回显“OK”或者类似“FAILED”...
    • 将脚本更改为 OK 和 FAILED。让它成为一个更好的例子。
    • @Cyber​​K:您可能还想抑制 wgets 输出:wget $1 2>/dev/null
    • 没有理由导出该变量。实际上,不需要变量:if [ $? = 0 ]
    【解决方案2】:

    你可以试试这样的:

    #!/bin/sh
    
    [ -n $1 ] || {
        echo "Usage: $0 [url to file to get]" >&2
        exit 1
    }
    
    wget $1
    
    [ $? ] && {
      echo "Could not download $1" | mail -s "Uh Oh" you@yourdomain.com
      echo "Aww snap ..." >&2
      exit 1
    }
    
    # If we're here, it downloaded successfully, and will exit with a normal status
    

    在制作将(可能)被其他脚本调用的脚本时,请务必执行以下操作:

    • 确保参数合理
    • 发送电子邮件、写入日志或执行其他操作,以便有人知道出了什么问题

    >&2 只是将错误消息的输出重定向到stderror,这允许调用脚本执行以下操作:

    foo-downloader >/dev/null 2>/some/log/file.txt
    

    因为它是一个简短的包装,所以没有理由放弃一点理智:)

    这还允许您有选择地将wget 的输出定向到/dev/null,您可能真的希望在测试时看到它,尤其是当您收到一封电子邮件说它失败时:)

    【讨论】:

      【解决方案3】:

      wget 以非交互方式执行。这意味着 wget 在后台工作,您无法使用 $? 捕获 de 返回代码。

      一个解决方案是处理“--server-response”属性,搜索http 200状态码 示例:

      wget --server-response -q -o wgetOut http://www.someurl.com
      sleep 5
      _wgetHttpCode=`cat wgetOut | gawk '/HTTP/{ print $2 }'`
      if [ "$_wgetHttpCode" != "200" ]; then
          echo "[Error] `cat wgetOut`"
      fi
      

      注意:wget 需要一些时间来完成他的工作,因此我设置了“sleep 5”。这不是最好的方法,但可以很好地测试解决方案。

      【讨论】:

        猜你喜欢
        • 2012-06-24
        • 2019-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多